/**
* 说明:
* 1、JS中用来存储待执行回调函数的队列包含两个不同特定的队列
* 2、宏队列:用来保存待执行的宏任务(回调),比如:定时器回调、DOM事件的回调、ajax回调
* 3、微队列:用来保存待执行的微任务(回调),比如:promise的回调、MutationObserver的回调
* 4、JS执行时会区别这两个队列:
* 4.1、JS引擎首先必须先执行所有初始化的同步任务代码
* 4.2、每次准备取出第一个宏任务之前都要先将所有的微任务一个一个取出执行
*/
判断一下运行结果:
// 延迟1s执行
setTimeout(()=>{
console.log('宏队列setTimeout1(延迟1s):'+1);
},1000);
// 延迟1s执行
setTimeout(()=>{
const p3 = Promise.resolve('555');
p3.then(
value => {console.log('宏队列里面的微队列:'+value);}
)
},1000)
// 不延迟
setTimeout(()=>{
console.log('宏队列setTimeout2:'+2);
})
const p1 = Promise.resolve('333');
p1.then(
value => {
console.log('微队列1_成功的结果为:'+value);
}
)
const p2 = Promise.resolve('444');
p2.then(
value => {
console.log('微队列2_成功的结果为:'+value);
}
)
微队列1_成功的结果为:333
微队列2_成功的结果为:444
宏队列setTimeout2:2
宏队列setTimeout1(延迟1s):1
宏队列里面的微队列:555