微任务和宏任务

今天看到了一篇很好的介绍微任务和宏任务的文章 https://www.cnblogs.com/jiasm/p/9482443.html

总结一下

 

process.nextTick和setImmediate的一个重要区别:多个process.nextTick语句总是在当前"执行栈"一次执行完,多个setImmediate可能则需要多次loop才能执行完。事实上,这正是Node.js 10.0版添加setImmediate方法的原因

 

由于process.nextTick指定的回调函数是在本次"事件循环"触发,而setImmediate指定的是在下次"事件循环"触发,所以很显然,前者总是比后者发生得早,而且执行效率也高(因为不用检查"任务队列")

 

微任务设计的目的简单讲就是为了插队,微任务在宏任务后调用,微任务会在下一个宏任务执行之前全部处理完再执行EventLoop,

所以如果有新的宏任务需要等待上一个eventLoop中的微任务执行完,这时如果你不想等到下一个宏任务之后执行某个事,你可以使用微任务的方式将你要做的插到当前eventloop中的微任务中,待所有微任务执行完毕再去开启下一个新的宏任务

posted @ 2021-12-14 19:02  superil  阅读(46)  评论(0编辑  收藏  举报