首页 > 其他 > 详细

定时器、promise执行步骤

时间:2021-06-08 21:41:52      阅读:21      评论:0      收藏:0      [点我收藏+]
setTimeout(function () {
            console.log(‘setTimeout‘);
    });
    new Promise(function (resolve) {
        console.log(‘promise‘);
        for (var i = 0; i < 10000; i++) {
            if (i === 10) {
                console.log(‘for‘);
            }
            if (i === 9999) {
                resolve(‘resolve‘);
            }
        }
    }).then(function (val) {
        console.log(val);
    });
    console.log(‘console‘);

执行结果:

技术分享图片

执行过程:

  • 这段代码作为宏任务,进入主线程。

  • 先遇到setTimeout,那么将其回调函数注册后分发到宏任务Event Queue。(注册过程与上同,下文不再描述)

  • 接下来遇到了Promisenew Promise立即执行,then函数分发到微任务Event Queue。

  • 遇到console.log(),立即执行。

  • 好啦,整体代码script作为第一个宏任务执行结束,看看有哪些微任务?我们发现了then在微任务Event Queue里面,执行。

  • ok,第一轮事件循环结束了,我们开始第二轮循环,当然要从宏任务Event Queue开始。我们发现了宏任务Event Queue中setTimeout对应的回调函数,立即执行。

  • 结束。

    事件循环,宏任务,微任务的关系如图所示:

    技术分享图片

定时器、promise执行步骤

原文:https://www.cnblogs.com/lige1234/p/14864119.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!