打印什么
async function async1() {
console.log("async1 start");
await async2();
console.log("async1 end");
}
async function async2() {
console.log( 'async2');
}
console.log("script start");
setTimeout(function () {
console.log("settimeout");
});
async1()
new Promise(function (resolve) {
console.log("promise1");
resolve();
}).then(function () {
console.log("promise2");
});
setImmediate(()=>{
console.log("setImmediate")
})
process.nextTick(()=>{
console.log("process")
})
console.log('script end');
第一轮:
current task:”script start”,”async1 start”,’async2’,”promise1”,“script end” micro task queue:[async,promise.then,process] macro task queue:[setTimeout,setImmediate]
第二轮
current task:process,async1 end ,promise.then micro task queue:[] macro task queue:[setTimeout,setImmediate]
第三轮
current task:setTimeout,setImmediate micro task queue:[] macro task queue:[]
最终结果:[script start,async1 start,async2,promise1,script end,process,async1 end,promise2,setTimeout,setImmediate] 同样”async1 end”,”promise2”之间的优先级,因平台而异。