js执行顺序【setTimout,promise,async,await】面试问题详解

setTimeout(function () {
    console.log(1);
}, 100);

setTimeout(function () {
    console.log(2);
}, 0)

Promise.resolve(
    console.log(3)
).then(
    () => { console.log(4) }
)
async function async1() {
    console.log(5)
    await async2()
    console.log(6)
}
async function async2() {
    console.log(7)
}
async1()
console.log(8)


// 3 5 7 8 4 6 2 1
//宏任务:setTimout会被放入一个数组中等到最后执行,并且执行顺序和等待事件有关 ,所以最后是宏任务[2,1]
//遇到Promsie()同步同步任务,立即执行 3 
//微任务:Promise.then依次推入同步队列[4]并执行,继续向下执行 5 
//await是直接执行的,7
//微任务:await后面的代码会被放入同步队列[4,6],继续向下执行8
//因此最总结果是 3 5 7 8 4 6 2 1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值