先执行微任务,再执行宏任务
直接上代码吧!
console.log("start");
setTimeout(() => {
console.log("1")
}, 0);
new Promise((res)=>{
console.log('res');
res()
}).then(()=>{
console.log("then1");
}).then(()=>{
console.log("then2");
})
console.log("end")
//答案也是显而易见的
start
res
end
then1
then2
1
总结一下:
console.log就不用多说了吧
微任务:
1. Promise
2. MutaionObserver
3. Object.observe(已废弃;Proxy
对象替代)
4. process.nextTick(Node.js)
注:promise .then.catch里面是一个函数的话,那么他就是微任务,如果后面不是函数,那么他就是同步任务
宏任务:
1. script (可以理解为外层同步代码)
2. setTimeout/setInterval
3. UI rendering/UI事件
4. postMessage,MessageChannel
5. setImmediate,I/O(Node.js)