gpt4 book ai didi

javascript - 被发电机搞糊涂了

转载 作者:行者123 更新时间:2023-12-03 04:52:32 25 4
gpt4 key购买 nike

在下面的代码(取自 Javascript Concurrency)中,在 iterable = genMap(iterable, iteratee) for-of 循​​环之后应该有三个生成器对象。但是,yield* iterable 是单个引用。它如何从 genMap产生三组值?谢谢。

function* genMap(iterable, iteratee) {
for (let item of iterable) {
console.log('item', item)
yield iteratee(item);
}
}

function composeGenMap(...iteratees) {

return function* (iterable) {
for (let iteratee of iteratees) {
iterable = genMap(iterable, iteratee);
}

yield* iterable;
}
}

// Our iterable data source.
var array = [ 1, 2, 3 ];

var composed = composeGenMap(
x => x + 1,
x => x * x,
x => x - 2
);

for (let item of composed(array)) {
console.log('composed', item)
}
// →
// composed 2
// composed 7
// composed 14

最佳答案

yield* 将执行推迟到另一个生成器,或者如果您愿意的话,也可以是可迭代的。

这意味着它在技术上可以产生多个值(在您的情况下是三个)。

来自the Mozilla Developer Network article on yield* :

The yield* expression is used to delegate to another generator or iterable object.

关于javascript - 被发电机搞糊涂了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42592660/

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