两个函数弄懂 async await 执行顺序
测试
定义这两个函数
js
main()
async function main() {
const res = await speak()
console.log(res);
}
async function speak() {
const res = await new Promise(resolve => {
setTimeout(() => {
resolve('11')
}, 1000)
})
return '返回值'
}经过测试会发现,过了 1s 后,打印的 res 值始终是 speak 函数 return 的返回值。 
其实 async 函数本身会返回一个 Promise。上面的 speak 函数使用 Promise + then 函数的写法可以是:
这里的写法只是为了帮助理解
实际上 async 函数是 Promise 和 generator 函数的语法糖。
js
function speak() {
return new Promise(o_resolve => {
new Promise(i_resolve => {
setTimeout(() => {
i_resolve('11')
}, 1000)
}).then(value => {
// const res = xxxx
// 获取 return 的返回值 returnValue
o_resolve(returnValue)
})
})
}结论
async 函数的返回值应该是 await 函数内部 return 关键字后面的那个值。