为什么等待不等待setTimeOut

时间:2019-05-30 18:00:01

标签: javascript async-await

尝试学习异步/等待,下面的代码在getUserName()上等待2秒后返回userName。 hasUser(返回承诺),然后仅记录接收到的用户名。

问题出在方法日志console.log(msg)中的undefined内。

function getUserName() {
    setTimeout(() => {
        return 'Appu'
    },2000)
}

var hasUser= async() => {
        var a = await getUserName()
        return a
    }

hasUser().then((msg) => {
    console.log(msg)
})

不确定这里是什么问题。欣赏解释这里实际发生的事情。

谢谢。

1 个答案:

答案 0 :(得分:4)

hasUser不返回承诺。您尝试await getUserName(),但是也不会返回承诺。如果您想await getUsername(),则需要做出getUserName的承诺

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