生成器没有yield

7
var A = {
  demo : function() * {
    /* Some logic here, but no yield is used */
  } 
}

如果一个generator方法没有yield任何东西,那么它有什么用途?你是否曾经使用过这样的东西?使用案例是什么?


2
也许调用 demo 的任何内容都期望返回一个迭代器。生成器函数是创建迭代器的简单方法。 - Felix Kling
是的,这是一个很好的使用案例。你有没有用过它来处理其他情况? - Alkis Kalogeris
@FelixKling 如果你愿意,你可以把你的评论发表为答案,这样我就可以接受它。 - Alkis Kalogeris
2个回答

5

这很像一个空函数——有人想调用函数,但你无事可做。

同样地,一个空的生成器函数是一个创建不执行任何操作的生成器的函数。它代表了空序列。然而,一个不使用 yield 的生成器函数并不一定是空的——它仍然可以进行某些操作并具有结果值,只是没有中间结果。


0
以下代码每100毫秒在响应中打印'someValue',持续5秒。它不使用yield
const Koa = require('koa');
const through = require('through');


(new Koa()).use(function *(){
  const tr = through();
  setInterval(() => tr.write('someValue\n'), 100);
  setTimeout(tr.end, 5000);
  this.body = tr;
}).listen(3003, () => {});

使用以下命令访问:curl localhost:3003


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接