Javascript事件轮询以及宏任务和微任务都是些老生常谈的话题了。最近系统性的深入学习了一下这部分的相关知识,发现了一些比较好的资料。在这里整理了一下,
事件轮询
首先推荐看一下 Philip Roberts 的这个Javascript Event Loop的演讲视频
虽然时间有点久了,但是是一个非常的经典的解释Event Loop的视频。
然后推荐看一下这篇文章:
https://dev.to/lydiahallie/javascript-visualized-event-loop-3dif
作者制作了很多清晰易懂的可视化gif图来详细解释Event Loop 所经过的每一个步骤,看完你会对调用栈、任务队列、webApi有一个非常清晰的认识
image
最后是这篇文章:
这篇文章对Event Loop的阐述也是非常详尽的,并且从CPU的使用层面对Event Loop做了说明,包括任务队列对页面渲染的影响,都有非常不错的代码示例。
宏任务和微任务
看完Event Loop后就绕不开宏任务和微任务的话题,以下也是讲解的比较好的文章。
可视化 Promise & async & await
https://dev.to/lydiahallie/javascript-visualized-promises-async-await-5gke
和可视化Event Loop一样,也是一组非常清晰的gif图形讲解。
image
任务,微任务,队列和时间表
https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/
这篇文章也非常不错,很多人都在推荐