浏览koa示例,文档和中间件时,我注意到yield
的两种形式都在使用,没有任何特别的区别我注意到了。最极端的情况是在koa-mount中,sample code使用yield next;
表单,而itself包使用yield*
几次。其他包(例如koa-views)也使用yield next
表单。
我理解语言所定义的两种形式之间的差异,但不明白在koa的情况下它们是如何互换使用的,以及何时使用一种形式是正确的其他
经过一些更多的研究,我明白,因为koa是建立在co之上的,并且co能够处理多种类型的异步结果(thunks,Promises ......),所以两者都可能是合法的,但我仍然不确定哪个指南有助于确定在每种情况下使用哪种表单。
答案 0 :(得分:6)
本文 - 来自koa团队成员之一的yield next vs. yield* next ,准确地解释了这是什么以及他们使用它的原因。
在某些情况下,可以使用此yield *
,如文章所示,以避免额外的co
调用,或在屈服时保持上下文(this
)。但话说回来,并不是真的需要 - 正如作者所说,“我们并不主张避免混淆”。