异步关键字/承诺对等

时间:2018-08-09 14:30:24

标签: javascript asynchronous promise settimeout

这两个不相等吗?

这不起作用。

const message = async () => {
    setTimeout(() => {
        console.log("delayed")
        return true
    }, 1000)
}

但这可以吗?

const message = () => {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            console.log("delayed")
            resolve(true)
        }, 1000)
    })
}

这是否意味着您只能在异步函数中直接“返回”(而不是在另一个函数中)?

异步函数返回的承诺与常规承诺不同吗?究竟如何初始化?

1 个答案:

答案 0 :(得分:5)

第一个示例中的message函数没有return语句来传递其分辨率值。

第二个示例中的Promise明确地将值传递给resolve()

  

这是否意味着您只能在异步函数中直接“返回”(而不是在另一个函数中)?

是的。函数的返回值由该函数中的return语句确定。将return语句放在其他函数中将设置那个函数的返回值。