gpt4 book ai didi

javascript - 生成器函数中的委托(delegate) yield (yield star、yield *)

转载 作者:行者123 更新时间:2023-11-28 08:55:24 24 4
gpt4 key购买 nike

ECMAScript 6 应该带来生成器函数和迭代器。生成器函数(具有 function* 语法)返回一个迭代器。迭代器有一个 next 方法,当重复调用时,该方法会执行生成器函数的主体,并在每个 yield 运算符处重复暂停和恢复执行。

ECMAScript 6 wiki on generators还引入了“委托(delegate) yield ”yield* 运算符,如下所示:

The yield* operator delegates to another generator. This provides a convenient mechanism for composing generators.

“委托(delegate)给另一个生成器”是什么意思?如何使用 yield* 来“方便地组合生成器”?

[您可以使用 Node v0.11.3 中的 --harmony-generators 标志来使用生成器。]

最佳答案

委托(delegate)给另一个生成器意味着当前生成器停止自行生成值,而是生成另一个生成器生成的值,直到耗尽它为止。然后它继续生成自己的值(如果有)。

例如,如果 secondGenerator() 生成从 1015 的数字,并且 firstGenerator() 生成从 15 的数字,但在生成 2 后委托(delegate)给 secondGenerator(),然后由 生成的值>firstGenerator() 将是:

1, 2, 10, 11, 12, 13, 14, 15, 3, 4, 5

function* firstGenerator() {
yield 1;
yield 2;
// Delegate to second generator
yield* secondGenerator();
yield 3;
yield 4;
yield 5;
}

function* secondGenerator() {
yield 10;
yield 11;
yield 12;
yield 13;
yield 14;
yield 15;
}

console.log(Array.from(firstGenerator()));

关于javascript - 生成器函数中的委托(delegate) yield (yield star、yield *),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18586225/

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