关于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
是的。
有些问题,自己想着不懂, 但写出来提问时,写着写着突然就明白了。
00
相似问题