关于async/await执行顺序问题?

来源:8-12 async-await是语法糖,异步的本质还是回调函数

Norman_Ghost

2021-12-24

因为我工作中经常用async/await,但是我还是理解不了await后面代码相当于callback,需要eventloop机制来执行。
下面是我写的代码,用axios加载一个svg。执行这个代码,按照老师的说法,控制台一开始会出现“async1 flag:, undefined”,然后http返回成功后再出现“async1 flag:, true”。但是,事实上只有“async1 flag:, true”
如果await后面代码是在同步代码执行完再执行,那我写的代码肯定一堆bug,而且async/await写法都是同步写法,如果执行顺序不是同步,那么async/await存在的意义也就没有了吧?希望老师能帮我解惑,谢谢

async function async1 () {
  const flag = await async2()
  console.log('async1 flag:', flag);
}
async function async2 () {
  const res = await axios.get('https://www.bootcdn.cn/assets/img/maoyun.svg')
  if (res.data) {
    return true
  } else {
    return false
  }
}
async1()

我好像懂了,不知道我这种理解对不对?
我的async1函数里面形成了async/await环境,可以按照顺序执行。老师的例子中的

console.log('script start')
async1()
console.log('script end')

是在顶级作用域,没有async/await环境,所以async1函数里面的await async2()后面就别成了callback,等到同步代码都执行完再开始执行它们

写回答

1回答

双越

2021-12-25

是的。

有些问题,自己想着不懂, 但写出来提问时,写着写着突然就明白了。

0
0

一天时间高效准备前端技术一面 匹配大厂面试要求

针对时下面试高频考点,帮助新人js面试快速通关

4719 学习 · 1683 问题

查看课程