一个 promise的函数 已经使用await 在等待结果了 为什么还是会直接return 返回pending状态
问题描述
一个 promise的函数 已经使用await 在等待结果了 为什么还是会直接return 返回pending状态
问题出现的环境背景及自己尝试过哪些方法
为什么在c的函数体中一定要加await才能在3秒后输出内容,加上await不应该同步等待aa执行完成之后才return么?
如果c不加async.await,则会打印出pending状态的promise
相关代码
function aa() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('wwee')
}, 3000)
})
}
const b = async() => {
let w = await aa()
console.log(w) //这时候是3秒打印内容
return w
}
const c = async() => {
console.log(await b())
}
c()
你期待的结果是什么?实际看到的错误信息又是什么?
自己想的应该是等待3秒之后才会return出结果,但是直接返回了一个promise的pending状态,感觉很奇怪,有什么办法可以解决么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
async修饰的函数,返回值会自动转为promise。它是同步执行的,如果内部有await,会在await全部执行完后,返回的promise状态才会改变。
对你有帮助的话,请点个采纳给个赞,谢谢。
const b = await async() => {...}
不能 await 就在外面再包一层 async
async 使返回类型就是为 Promise
按照你的代码只能