아래 코드 (Javascript 동시성에서 가져옴)에서 iterable = genMap(iterable, iteratee)
for-of 루프 다음에 세 개의 생성기 개체가 있어야합니다. 그러나 yield* iterable
은 단일 참조입니다. 그것은 genMap
에서 3 가지 값을 yield
하는 방법은 무엇입니까? 고맙습니다.생성자에 의해 혼동 됨
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 *'는 다른 발전기로의 실행을 연기합니다. – gyre