У меня есть итератор, который я хочу разбить на функции, например, полный итератор:
export function* myIterator(foo) {
for (const xs of foo) {
for (const ys of xs.y) {
for (const zs of ys.z) {
if (zs) {
for (const qs of zs.q) {
if (qs) {
yield qs;
}
}
}
}
}
}
}
Кому:
export function* myIterator(xs) {
for (const ys of xs.y) {
for (const zs of ys.z) {
if (zs) {
for (const qs of zs.q) {
if (qs) {
yield qs;
}
}
}
}
}
}
function* myOuterIterator(foo) {
for (const xs of foo) {
yield myIterator(xs);
}
}
Но это не сохраняет то же поведение в for of
. Есть ли способ повторно использовать генераторы?
(удаление доходности с myOuterIterator
тоже не помогает)