相对于简单的Promise版本,sleep的实现照样没变。不过在调用sleep的前面加一个await,如许只有sleep这个异步完成了,才会接下落行下面的代码。同时须要把代码逻辑包在一个async标记的函数琅绫擎,这个函数会返回一个Promise对象,当琅绫擎的异步都履行完了就可以then了:
- init().then(() => console.log("init finished"));
ES7的新属性让我们的代码加倍地简洁优雅。
关于准时器还有一个很重要的话题,那就是setTimeout和setInterval的差别。如下图所示:


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

控制台输出:

与膳绫擎的模型分析一致。
接着再评论辩论最后一个话题,函数撙节
它们分别是两个函数,父窗口定义了一个,子窗口又定义了一个,内存地址不一样,内存地址不一样的Object等式断定不成立,而window.parent.arrayData.constructor返回的是父窗口的Array,比较的时刻是在子窗口,应用的是子窗口的Array,这两个Array不相等,所以导致断定不成立。
7. 函数撙节throttling
我们先看一下,resize/mousemove事宜1s种能触发若干次,于是写了以下驱动代码:
- let begin = 0;
- let count = 0;
- window.onresize = function() {
- count++;
- let now = Date.now();
- if (!begin) {
- begin = now;
- return;
- }
- if((now - begin) % 3000 < 60) {
- console.log(now - begin,
- count / (now - begin) * 1000);
- }
- };
当把窗口拉得比较快的时刻,resize事宜大年夜概是1s触发40次:

须要留意的是,并不是说你拉得越快,触发得就越快。实际情况是,拉得越快触发得越慢,因为拉动的时刻页面须要重绘,变更得越快,重绘的次数也就越多,所以导致触发得更少了。
mousemove事宜在我的电脑的Chrome上1s大年夜概触发60次:
推荐阅读
深度进修在2006年开端崭露头脚后,近几年取得了飞速的成长,无论是学术研究照样企业应用均出现出指数级增长的趋势;伴跟着这项技巧的赓续成熟,深度进修在智能语音范畴率先发力,取得一系列>>>详细阅读
本文标题:JS高级程序设计高级技巧
地址:http://www.17bianji.com/lsqh/37133.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示