javascript - 为什么 await 不等待 setTimeOut
问题描述
尝试学习异步/等待,下面的代码等待getUserName()
2 秒后返回用户名。hasUser
(返回一个承诺)然后只记录收到的用户名。
问题console.log(msg)
出在 then 方法的日志undefined
中。
function getUserName() {
setTimeout(() => {
return 'Appu'
},2000)
}
var hasUser= async() => {
var a = await getUserName()
return a
}
hasUser().then((msg) => {
console.log(msg)
})
不知道这里有什么问题。感谢解释这里实际发生的事情。
谢谢。
解决方案
hasUser
不返回承诺。您尝试这样做,await getUserName()
但这也不会返回承诺。如果你愿意,await getUsername()
你需要做出getUserName
回报承诺
function getUserName() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Appu')
},2000)
})
}
推荐阅读
- c# - c# Core System.Management.Automation 远程连接错误
- anaconda - anaconda mkl 安装中缺少 mkl_service.h 标头
- css - 导航元素的背景未填充整个空间
- reactjs - create-react-app:使用非 npm 依赖项/库
- ngx-bootstrap - 有没有办法延迟 ngx-bootstrap 手风琴的打开?
- javascript - 从画布转换后如何将图像作为表单的一部分提交?
- javascript - AWS Rekognition Javascript SDK - UnknownError:错误请求
- sql - 使用 CASE 和 Union [TSQL] 选择
- android - firebase 云消息在某些设备中未收到通知
- c# - 根据多个标准评估列表元素