Eventloop

2018-11-05  本文已影响0人  monvhh

https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/
https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop

Event Loop是一个程序结构,用于等待和发送消息和事件。
(a programming construct that waits for and dispatches events or messages in a program.)

简单说,就是在程序中设置两个线程:一个负责程序本身的运行,称为"主线程";另一个负责主线程与其他进程(主要是各种I/O操作)的通信,被称为"Event Loop线程"。

image.png

tasks 队列的第一个任务取出,开始执行。
执行直到当前 stack 为空,于是去检查 microtasks 队列。
依次执行 mocrotasks 队列的所有任务,直到 mocrotasks 队列为空,转 1 。

task主要包含:setTimeout、setInterval、setImmediate、I/O、UI交互事件
microtask主要包含:Promise、MutaionObserver

task按顺序执行,浏览器渲染穿插其间。
microtasks一组,按顺序完成
1,每个回调之后执行,只要不在js执行过程中。
2,每个task结束。

process.nextTick 优先于Promise。

https://jsblog.insiderattack.net/promises-next-ticks-and-immediates-nodejs-event-loop-part-3-9226cbe7a6aa

上一篇下一篇

猜你喜欢

热点阅读