ES2017异步/等待功能 - 它们只适用于承诺吗?

时间:2015-07-08 13:41:26

标签: javascript ecmascript-6 async-await babeljs ecmascript-2017

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

如果错误,请纠正我,但他们只与Promises合作吗?如果是,这意味着我需要将常规回调函数包装到Promises中(我目前正在做什么)。

2 个答案:

答案 0 :(得分:10)

当前(也可能是最终的)async / await提案等待承诺和desugars到类似bluebird的Promise.coroutine,其中await扮演yield的角色。

这是有道理的,因为promises代表一个值+时间,你正在等待该值可用。注意await也会像C#或Python(3.5+)等所有其他语言中的构造一样等待承诺。

请注意,将回调API转换为promises非常简单,有些库提供了在单个命令中执行此操作的工具。有关详细信息,请参阅How to convert an existing callback API to promises

答案 1 :(得分: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