试试写一下打印顺序呢
async function awaitFoo(word) {
console.log("def await function " + word);
Promise.resolve().then(() => {
console.log("run await function" + word)
})
}
async function asyncFoo(word) {
console.log(word + " async function start")
idle(1000);
await awaitFoo(word)
console.log(word + " async function end")
}
function idle(time) {
const d = new Date();
while (+new Date() - d < time) ;
console.log("等待了" + time / 1000 + "秒")
}
;(function () {
console.log("start")
asyncFoo("A")
// 主线程代码扫完之后添加的第一个宏
setTimeout(() => {
console.log("timeout 0")
}, 1000)
const p = new Promise(resolve => {
console.log("promise def");
resolve();
})
// 主线程代码扫完之后添加的第一个job
p.then(() => {
console.log("promise 0 then");
setTimeout(() => {
console.log("timeout in promise");
});
idle(1000)
Promise.resolve().then(() => {
console.log("promise in promise")
})
})
// 主线程代码扫完之后添加的第二个job
Promise.resolve().then(() => {
console.log("promise 1 then")
})
// 主线程代码扫完之后添加的第二个宏
setTimeout(() => {
console.log("timeout 1");
}, 600)
console.log("end")
})();
评论里交流~