迭代返回Generator的Generator
Iterate over Generator which returns a Generator
我试着去理解generator,但是我发现了一个我无法遵循的例子。
// First Generator
function* Colors ()
{
yield "blue";
yield* MoreColors ();
yield "green";
}
// Generator refered by the first Generator
function* MoreColors ()
{
yield "yellow";
yield "orange";
}
// Let us iterate over the first Generator
const colorIterator = Colors();
let color;
while (!(color = colorIterator.next()).done)
{
console.log(color.value);
}
输出为:"蓝色"黄色"橙色"绿色"
我预期:"蓝色"黄色"橙色"
为什么我期望这个:我认为在橙色返回后,方法.next()在迭代器上从MoreColors ()调用。对于属性.done,这应该返回一个属性值为true的对象。这样,item等于true, while循环应该停止。
显然,我的期望是错误的。
如果有人能指出我的错误,我会很高兴的。
问题是生成器的颜色不会停止一旦MoreColors停止。在MoreColors完成后,Colors的执行将从它停止的地方继续,因此它将在完成之前返回"绿色"。这是因为生成器没有"变成"MoreColors,而是返回它的答案,并且.next()方法仍然在Colors上被调用。
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- JSONP请求返回结果,但也触发error_callback
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- JS验证ajax返回的html中的表单数据
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- AJAX:$_GET不返回任何值
- 从Javascript方法返回全局变量
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 迭代返回Generator的Generator