作家
登录

JS高级程序设计高级技巧

作者: 来源: 2017-09-05 09:19:53 阅读 我要评论

  •   
  • async function init() { 
  •     await sleep(2000); 
  •     console.log("sleep recover"); 
  •   
  • init(); 
  • 相对于简单的Promise版本,sleep的实现照样没变。不过在调用sleep的前面加一个await,如许只有sleep这个异步完成了,才会接下落行下面的代码。同时须要把代码逻辑包在一个async标记的函数琅绫擎,这个函数会返回一个Promise对象,当琅绫擎的异步都履行完了就可以then了:

    1. init().then(() => console.log("init finished")); 

    ES7的新属性让我们的代码加倍地简洁优雅。

    关于准时器还有一个很重要的话题,那就是setTimeout和setInterval的差别。如下图所示:

    JS高等法度榜样设计高等技能

    JS高等法度榜样设计高等技能

    这个代码的履行模型是如许的:

    JS高等法度榜样设计高等技能

    控制台输出:

    JS高等法度榜样设计高等技能

    与膳绫擎的模型分析一致。

    接着再评论辩论最后一个话题,函数撙节

    它们分别是两个函数,父窗口定义了一个,子窗口又定义了一个,内存地址不一样,内存地址不一样的Object等式断定不成立,而window.parent.arrayData.constructor返回的是父窗口的Array,比较的时刻是在子窗口,应用的是子窗口的Array,这两个Array不相等,所以导致断定不成立。

    7. 函数撙节throttling

    我们先看一下,resize/mousemove事宜1s种能触发若干次,于是写了以下驱动代码:

    1. let begin = 0; 
    2. let count = 0; 
    3. window.onresize = function() { 
    4.     count++; 
    5.     let now = Date.now(); 
    6.     if (!begin) { 
    7.         begin = now; 
    8.         return
    9.     } 
    10.     if((now - begin) % 3000 < 60) { 
    11.         console.log(now - begin
    12.            count / (now - begin) * 1000); 
    13.     } 
    14. }; 

    当把窗口拉得比较快的时刻,resize事宜大年夜概是1s触发40次:

    JS高等法度榜样设计高等技能

    须要留意的是,并不是说你拉得越快,触发得就越快。实际情况是,拉得越快触发得越慢,因为拉动的时刻页面须要重绘,变更得越快,重绘的次数也就越多,所以导致触发得更少了。

    mousemove事宜在我的电脑的Chrome上1s大年夜概触发60次:

    JS高等法度榜样设计高等技能


      推荐阅读

      为了合成让人类听懂的语音,机器做了哪些“深度学习”?

    深度进修在2006年开端崭露头脚后,近几年取得了飞速的成长,无论是学术研究照样企业应用均出现出指数级增长的趋势;伴跟着这项技巧的赓续成熟,深度进修在智能语音范畴率先发力,取得一系列>>>详细阅读


    本文标题:JS高级程序设计高级技巧

    地址:http://www.17bianji.com/lsqh/37133.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)