event loop

浏览器线程

浏览器里常用的线程有,js线程,gui线程,http线程, 事件线程
js线程负责js解析执行
gui线程负责渲染
http负责请求通信
事件线程负责处理浏览器事件

js代码在js线程中执行时, 同步代码在js线程中直接处理
异步回调,例如事件回调,setTimeout,promise等 会被推入一个队列里

event loop 事件循环

这个队列里在前面的是misco 也叫job:
process.nextTick, promise, mutationObserver

后面的是macro 也叫task:
setTimeout, setInterval, setImmediate, i/o, ui rending

promise 会被插入到下一个事件循环的前端, 注意是下一个, 不是当前的事件循环