gpt4 book ai didi

javascript - 迭代 Generator 并返回 Generator

转载 作者:太空宇宙 更新时间:2023-11-04 16:22:41 26 4
gpt4 key购买 nike

我尝试理解生成器,但我发现了一个我无法遵循的示例。

// 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);
}

输出为:“蓝色的”“黄色的”“橙子”“绿色”

我预计:“蓝色的”“黄色的”“橙色”

为什么我期望这样:我认为在返回orange之后,从MoreColors ()在迭代器上调用方法.next()。这应该返回一个对象,其属性 .done 的属性值为 true。这样,item 等于 true 并且 while 循环应该停止。

显然,我的期望是错误的。

如果有人能指出我的错误,我会很高兴。

最佳答案

问题在于,一旦 MoreColors 停止,颜色生成器就不会停止。 MoreColors 完成后,Colors 的执行会从停止处继续执行,因此在完成之前会返回“绿色”。这是因为生成器不会“成为”MoreColors,而是返回其答案,并且仍然在 Colors 上调用 .next() 方法。

关于javascript - 迭代 Generator 并返回 Generator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40472333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com