【问题标题】:Distinction between Coroutines and Generators in Koa context?Koa 上下文中协程和生成器的区别?
【发布时间】:2014-05-31 03:29:21
【问题描述】:

协程和生成器之间的区别对我来说是模糊的。

如果有人能阅读文章回调与协程 - 回调与生成器与协程的对比https://medium.com/code-adventures/174f1fe66127

,我将不胜感激

...然后解释生成器和协程之间的差异和竞争(标题确实使用术语“vs”)在本文中说明/呈现的位置和方式?更一般地说,我的问题是这种区别实际上是什么,这种区别是否适用于在 Koa(在 Node.js 中)构建应用程序时处理异步请求的编码模式可能有何不同?

【问题讨论】:

    标签: node.js generator coroutine koa co


    【解决方案1】:

    生成器有时被称为“半协程”,更多 有限形式的协程,可能只屈服于它的调用者。这 使生成器的使用比协程更明确,因为只有 产生的值可能会暂停“线程”。

    “生成器”比协程低。它们可以用作协程库的构建块。 如果您在语言中有“生成器”,则可以构建“协程”库。

    ES6 提供了“生成器”,因此您可以使用“协程”库来实现 节点中的协​​程编程(顺序,用 try-catch 代替回调)

    使用协程库,您可以“等待”异步调用完成。

    检查:https://github.com/luciotato/waitfor-ES6

    【讨论】:

    • 嗨卢西奥。感谢您的回复。两件事:
    • 1) 提到我原来的问题,为什么在文章标题“...generators vs coroutines...”中使用“versus”这个词是不是恰当的用语,或者我不理解事情,所以我可以理解这里的“对”是什么意思?似乎不是两者之间的选择。协程看起来更像是运行生成器的控制逻辑,并将它们推进到产量之上。我在正确的轨道上吗?
    • 2) 沿着这条线,想知道您是否可以看一下aaron-powell.com/posts/…,并告诉我所提供的“跑步者”功能(在文章末尾详细说明)是否符合正在协程。 (根据您的回答可能会有一个后续问题)
    • 另外,大约两周的时间,已经查看了wait-ES6 和parallel-ES6,而且刚刚他们允许编写代码的“语法”非常好。就是说,有几个保留意见,也许您可​​以解决: 1. 除了您的 github 页面之外,网络上的文档等很少; 2) 与 Co 和 Bluebird 相比的性能特征;可能会在我的应用程序中使用 Koa,它与 Co 紧密绑定,你的实用程序将如何在 Koa 上下文中工作,你能举个例子吗?我认为 Co 与 Koa 捆绑在一起,给了 Co 一个“营销”优势。
    • (请注意之前的评论:措辞“...说与 Co 和 Bluebird 相比;可能会使用 Koa...”应该改为“...say 与 Co 和 Bluebird 相比?; 3) 可能会使用 Koa..."
    猜你喜欢
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 2020-01-19
    • 1970-01-01
    • 2011-08-22
    • 2014-12-25
    • 1970-01-01
    相关资源
    最近更新 更多