Event Loop -> MicroQueue -> MacroQueue
macrotasks: setTimeout, setInterval, setImmediate, requestAnimationFrame, I/O, UI rendering
microtasks: Promises, Object.observe, MutationObserver
https://ruiming.me/archives/158 https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/ https://i.loli.net/2017/08/25/59a01ccba2bbe.png
setTimeOut 0ms 并非真的是 0ms,在浏览器中会转为浏览器支持的最小值(Chrome 是 1ms) setTimeout(fn, 0) ===> setTimeout(fn, minValue)
http://voidcanvas.com/setimmediate-vs-nexttick-vs-settimeout/ https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/ http://voidcanvas.com/wp-content/uploads/2017/02/event-loop.png
setTimeOut 0ms 并非真的是 0ms,在浏览器中会转为引擎支持的最小值(V8 是 1ms) setTimeout(fn, 0) ===> setTimeout(fn, minValue)