3

浏览 koa 示例、文档和中间件,我注意到这两种形式yield都在使用,我没有注意到任何特别的区别。最极端的情况是在koa-mount中,示例代码使用了yield next;form,包本身使用yield*了多次。其他包(例如koa-views)也使用这种yield next形式。

我理解语言定义的两种形式之间的区别,但不明白在 koa 的上下文中它们是如何互换使用的,什么时候使用一种而不是另一种是正确的。

编辑 29/5

经过一番研究,我了解到,由于 koa 是建立在 co 之上的,并且 co 能够处理多种类型的异步结果(thunk,Promises ...),因此两者都可能是合法的,但我仍然不确定什么指导方针有助于决定在每种情况下使用哪种形式。

4

1 回答 1

6

这篇文章 - yield next vs. yield* next来自 koa 的一位团队成员,准确解释了这是什么以及他们使用它的原因。

yield *如文章所示,在某些情况下可以使用 this来避免额外的调用,或者在让步时co保持上下文 ( )。this但话又说回来,它并不是真正需要的——正如作者所说,“我们不提倡它以避免混淆”。

于 2015-05-29T22:17:00.080 回答