首页 > 解决方案 > 为什么 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)
})

不知道这里有什么问题。感谢解释这里实际发生的事情。

谢谢。

标签: javascriptasync-await

解决方案


hasUser不返回承诺。您尝试这样做,await getUserName()但这也不会返回承诺。如果你愿意,await getUsername()你需要做出getUserName回报承诺

function getUserName() {
    return new Promise((resolve, reject) => {
       setTimeout(() => {
          resolve('Appu')
       },2000)
    })
}

推荐阅读