JavaScript有一个基于事件循环的并发模型,事件循环负责执行代码、收集和处理事件以及执行队列中的子任务。事件循环其实就是入栈出栈的循环。作为单线程的javascript就是通过event loop来实现了它的异步编程特性。
宏任务(Macrotask):
script(整体代码)、setTimeout、setInterval、XMLHttpRequest.prototype.onload、I/O、UI 渲染、setImmediate(node独有)
微任务(Microtask):
process.nextTick(node独有), Promises, Object.observe, MutationObserver