js 宏任务和微任务
- 代码
setTimeout(function() {
// 异步宏任务
console.log('1');
})
new Promise(function(resolve) {
// 同步
console.log('2');
}).then(function() {
// 微任务
console.log('3');
})
// 同步
console.log('4');
//打印顺序 2 4 3 1
- 解析:
- 此段代码的宏任务: js全部代码、setTimeout; 微任务:promise.then
- 执行的时候先执行第一个宏任务,即js全部代码,在执行里面的微任务 promise,最后执行下一个宏任务 setTimeout
- 图解:

- 常见宏任务和微任务
- 宏任务:script全部代码、setTimeout、setInterval、setImmediate(浏览器暂时不支持,只有IE10支持,具体可见MDN)、I/O、UI Rendering
- 微任务:Process.nextTick(Node独有)、Promise、Object.observe(废弃)、MutationObserver