异步任务都放到“任务队列”中执行 队列分为宏队列和微队列
setTimeout(()=>{//会立即放入宏队列
console.log("timeout callback()")
},0)
Promise.resolve(1).then(
value=>{ //会立即放入微队列
console.log("Promise onResolved()",value)
}
)
执行如下:
微队列的回调函数优先执行
说明:
1、JS中用来储存待执行回调函数的队列包含2个不同特定的队列
2、宏队列:用来保存待执行的宏任务(回调)比如:定时器回调、DOM事件回调、ajax回调
3、微队列:用来保存待执行的微任务(回调),比如promise的回调
4、JS执行时会区别这2个队列
(1)JS 引擎首先必须先执行所有的初始化同步任务代码
(2)每次准备取出第一个宏任务执行前,都要将所有的微任务一个一个取出来执行
setTimeout(()=>{//立即放入宏队列
console.log("timeout callback1()")
Promise.resolve(3).then(
value=>{ //立即放入微队列
console.log("Promise onResolved3()",value)
}
)
},0)
setTimeout(()=>{//立即放入宏队列
console.log("timeout callback2()")
},0)
Promise.resolve(1).then(
value=>{//立即放入微队列
console.log("Promise onResolved1()",value)
}
)
Promise.resolve(2).then(
value=>{//立即放入微队列
console.log("Promise onResolved2()",value)
}
)