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这个中的代码加入到微任务队列