eventloop

task: js中每一个eventloop 都有一个或多个task任务队列,是一个先进先出的任务队列,根据任务源来区分任务应该放在哪个task任务队列中。
任务源有dom操作任务源,网络请求任务源,I/O操作任务源等...(setTimeout,setInterval,setImmediate的回调函数会重新起一个task任务队列)
microtask: 每一个eventloop都有且只有一个microtask任务队列,也是一个先进先出的任务队列。(promise,process.nextTick会被放到microtask任务队列中)
在一次eventloop中会先执行task任务队列中的任务,然后执行microtask任务队列中的任务.

setTimeout(function () {
    console.log(1);
}, 0);

new Promise(function (resolve, reject) {
    resolve();
}).then(function () {
    console.log(2);
});

setTimeout(function () {
    console.log(3);
});

setTimeout(function () {
    console.log(4);
    new Promise(function (resolve, reject) {
        resolve();
    }).then(function () {
        console.log(5);
    });
    new Promise(function (resolve, reject) {
        resolve();
    }).then(function () {
        console.log(6);
    });
}, 0);
// 输出结果为:2 1 3 4 5 6 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容