javascript - JavaScript 中 Async Await 中的关键字 "await"是否仅适用于 Promise?

标签 javascript

await 写入异步函数时,例如 -

let x = await doSomething()

doSomething 函数必须返回 Promise 吗?

最佳答案

它可能会返回任何内容,因为

let x = await doSomething()
// ... rest of your code

// is roughly equivalent

Promise
  .resolve(doSomething())
  .then(value => {
    let x = value

    // ... rest of your code
  })

但是如果 doSomething 是异步的,它必须返回一些“thenable”的东西,这样 await 才能真正工作

const doSomething = () => ({
  then(fn) {
    setTimeout(fn, 2000, 'hello')
  }
})

const run = async () => {
  let msg = await doSomething()
  
  console.log(msg)
}

run().then(() => console.log('Done'))

关于javascript - JavaScript 中 Async Await 中的关键字 "await"是否仅适用于 Promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45159624/

相关文章:

javascript - 在 JavaScript 中返回修改后的对象(类似于镜头)

javascript - Browserify/Babelify React 用于生产(NODE_ENV 生产)

javascript - 谷歌图表 - 获取行的颜色

javascript - 在 Javascript 中获取瘦客户端的虚拟 IP 地址

javascript - 在不兼容的接收器上调用方法 RegExp.prototype.exec

javascript - !important javascript css 它会去哪里

javascript - 如何在 addEventListener 中传递元素的 id?

javascript - 具有右箭头形状的自定义 div

javascript - 如何删除数组对象Javascript中所有具有isDone === true的项目?

javascript - 如何组织用户系统的 Mongo 集合