【发布时间】:2017-05-25 13:25:46
【问题描述】:
我刚刚痛苦地意识到生成器函数不能与 await 一起使用。只有 Promise 或异步函数。
我的团队构建了一个完整的应用程序,其中包含由生成器函数组成的所有模块,只需从主 js 文件调用 Co 模块。
除了检查数百个生成器函数并将它们从 function*(...){ 更改为 async function(...){ 之外,还有什么方法可以使生成器与 async/await 一起工作?
没有意义,因为 yield*/generators 和 async/await 在处理流程方面非常相似,所以我想知道他们是如何错过了 await 支持生成器的。
【问题讨论】:
-
仅供参考,
async/await不是 ES7 的一部分。 -
另外,如果您想重写大部分代码库,请考虑使用工具来完成,如果可能的话:github.com/facebook/jscodeshift(免责声明:我写的)
-
迁移的原因是什么?
-
“我刚刚痛苦地意识到,生成器函数不能与 await 一起使用。只能使用 Promise 或异步函数。” 没有尝试过
async/await,尽管对其中的模式感到好奇使用了导致问题的发电机。您能否在问题中包含一个无法与async/await一起使用的生成器函数的示例? -
"没有意义,因为 yield*/generators 和 async/await 在处理流程方面非常相似" - 我不明白你的意思。它们可能相似,但这并不意味着它们可以组合成两者兼有的东西。
标签: javascript node.js ecmascript-6 ecmascript-2017