测试
定义这两个函数
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 函数的写法可以是:
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 函数的返回值。