koa里面yield next 与 yield* next的区别?
发布于 9 年前 作者 Web-Kevin 7214 次预览 最后一次回复是 9 年前 来自 问答
最近有时间一直在看koa nc-example 的项目源码 有3个问题: 1.yield yield* lz知道他们俩的区别 但在koa里是否没有区别,因为都是调用下一个中间件? 2.后面的next是否都只下一个中间件? 3.一个中间件中是否只能有一个yield next或者yield* next?
8 回复
最近有时间一直在看koa nc-example 的项目源码 有3个问题: 1.yield yield* lz知道他们俩的区别 但在koa里是否没有区别,因为都是调用下一个中间件? 2.后面的next是否都只下一个中间件? 3.一个中间件中是否只能有一个yield next或者yield* next?
@ncuzp 的项目user_sess.js的代码
下面是koa guide里的一张图片,并没有用到 yield* https://github.com/koajs/koa/blob/master/docs/middleware.gif
yield next; // next 可以是任意值 yield* next; // next 必须是 generator yield* 不是标准, 不要使用, 据说新版已经删除了…
@magicdawn “yield* next; // next 必须是 generator” 不是必须 generator, 而是可迭代,要遵循迭代协议的对象。
https://github.com/fundon/ES6-QuickStart-and-Tips#generators
@magicdawn 也就是说yield* next 与 yield next在koa里是一样的作用对么?
@Web-Kevin
别用 yield* 就好
@magicdawn +1
@magicdawn 中间件编写也这样么
@fundon
了解, thanks