工作生活

2019-07-03 微任务与事件循环

2019-07-03  本文已影响0人  忙于未来的民工

1:本轮循环与次轮循环

异步任务可以分成两种。

追加在本轮循环的异步任务

追加在次轮循环的异步任务

process.nextTick和Promise的回调函数,追加在本轮循环,即同步任务一旦执行完成,就开始执行它们。而setTimeout、setInterval、setImmediate的回调函数,追加在次轮循环。

process.nextTick一定在Promise之前执行

2:process.nextTick

同步任务执行完之后,最先执行process.nextTick队列

3:微任务队列

Promise的回调在微任务队列中。微任务队列在process.nextTick队列之后执行

4:事件循环

微任务队列执行完之后,执行事件循环队列。注意:当开始执行事件循环队列时,其他队列的任务就算准备就绪了,也会将事件循环队列任务执行完之后,再执行其他队列。

事件循环队列也有具体区别,这里不做具体区分

5:async以及await、promise

当遇见await关键字时就会返回一个promise,await后面的代码就会放到promise.then中执行,也就是加入到微观队列。

promise:promise中的代码会直接执行,但是当在promise中调用resolve()方法时,就会将promise.then这个中的代码加入到微任务队列

参考:https://blog.csdn.net/xgangzai/article/details/89647029

上一篇 下一篇

猜你喜欢

热点阅读