[jS 事件循环理解] 主线程 宏任务 微任务 - 执行顺序优先级理解

Posted iOSTianNan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[jS 事件循环理解] 主线程 宏任务 微任务 - 执行顺序优先级理解相关的知识,希望对你有一定的参考价值。

最近看了一个帖子

事件循环机制-宏任务-微任务

把js单线程中 , 主线程 | 宏任务 | 微任务 的调用顺序讲解的很直白精巧 , 记录一下以供查阅

1.主线程, 可以理解为从上到下顺序执行的一个js线程
2. 宏任务 script / setTimeOut /setInterval等
3. 微任务主要有promise等
4. 热知识: new Promise 也算主线程

执行的顺序 我们可以这样理解

1.主线程内顺序执行
2.遇到 setTimeout等宏任务, 会把宏任务的回调代码放到 宏任务队列中排队
3.遇到 promise等微任务, 会把微任务(如.then)的回调代码 放到 微任务队列中排队执行
4.主线程完全执行完毕了, 再开始处理 宏任务队列微任务队列, 且 优先将微任务队列清空完毕,再完成宏任务队列的代码执行
5.当遇到 new Promise, 把他当做 主线程执行即可.

题3:


console.log(1);
setTimeout(function() 
    console.log(2);
, 0);
new Promise(function(resolve) 
    console.log(3);
    resolve(Date.now());
).then(function() 
    console.log(4);
);
console.log(5);
setTimeout(function() 
    new Promise(function(resolve) 
        console.log(6);
        resolve(Date.now());
    ).then(function() 
        console.log(7);
    );
, 0);

/// answer : 1 3  5  4 2  6 7

以上是关于[jS 事件循环理解] 主线程 宏任务 微任务 - 执行顺序优先级理解的主要内容,如果未能解决你的问题,请参考以下文章

js 事件循环消息队列和微任务宏任务

一篇搞定(Js异步事件循环与消息队列微任务与宏任务)

一篇搞定(Js异步事件循环与消息队列微任务与宏任务)

JavaScript之事件循环,宏任务与微任务

js运行机制 (包括宏任务微任务,同步异步,事件循环机制Event Loop)面试常问

微任务,宏任务顺序