function* fibonacci() {
let [a, b] = [0, 1];
while (true) {
yield a;
[a, b] = [b, a + b];
}
}
function* takeWhile(generator, predicate) {
for (const value of generator) {
if (!predicate(value)) break;
yield value;
}
}
const fib = fibonacci();
const smallFibs = takeWhile(fib, x => x < 20);
console.log([...smallFibs].join(','));
Ответ: 0,1,1,2,3,4,8,13
JavaScript test | #JavaScript