13

我开始async/await在我的 js 应用程序中使用 ES7 函数(由 Babel 编译)。

如果错了,请纠正我,但它们是否仅适用于 Promises?如果是,这意味着我需要将常规回调函数包装到 Promise 中(顺便说一句,我目前正在做的事情)。

4

2 回答 2

10

当前(也可能是最终的)async/await 提案正在等待承诺,然后将其脱糖成类似 bluebird 的角色Promise.coroutineawait扮演yield.

这是有道理的,因为 Promise 代表一个值 + 时间,而您正在等待该值变为可用。注意await还等待所有其他语言中的类似 promise 的构造,例如 C# 或 Python (3.5+) 。

请注意,将回调 API 转换为 Promise 非常容易,并且一些库提供了在单个命令中执行此操作的工具。有关更多详细信息,请参阅如何将现有回调 API 转换为 Promise

于 2015-07-08T13:51:17.680 回答
2

是的,你await的承诺。

async function myFunction() {
  let result = await somethingThatReturnsAPromise();
  console.log(result); // cool, we have a result
}

http://pouchdb.com/2015/03/05/taming-the-async-beast-with-es7.html

于 2015-07-08T13:45:57.100 回答