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.pngtasks 队列的第一个任务取出,开始执行。
执行直到当前 stack 为空,于是去检查 microtasks 队列。
依次执行 mocrotasks 队列的所有任务,直到 mocrotasks 队列为空,转 1 。
task主要包含:setTimeout、setInterval、setImmediate、I/O、UI交互事件
microtask主要包含:Promise、MutaionObserver
task按顺序执行,浏览器渲染穿插其间。
microtasks一组,按顺序完成
1,每个回调之后执行,只要不在js执行过程中。
2,每个task结束。
process.nextTick 优先于Promise。