async await 的执行顺序问题

本文探讨了async函数中await关键字的执行顺序问题。通过两个示例展示了由于微任务的不同调度,导致的不同结果。讲解了当遇到await时,控制权会如何在不同任务间切换,以及宏任务和微任务的执行顺序。
摘要由CSDN通过智能技术生成

 先看两个示例体现的问题

async function async1() {
  console.log("2");
  await async2();
  console.log(23132);
  await async3();
  console.log("3");
}
async function async2() {
  console.log("4");
  await async4();
}
async function async3() {
  console.log("5");
}
async function async4() {
  console.log("6");
}
async1();
setTimeout(function () {
  console.log("setTimeout");
}, 0);
new Promise((resolve) => {
  console.log("Promise");
  resolve();
})
  .then(function () {
    console.log("promise1");
  })
  .then(function () {
    console.log("promise2");
  });
console.log("7");
结果//
2
4
6
Promise
7
promise1
23132
5
promise2
3
setTimeout
async function async1() {
  console.log("2");
  await async2();
  console.log(23132);
  await async3();
  console.log("3");
}
async function async2() {
  console.log("4");
  // await asy
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值