⬅️ Execute Program Modern JavaScript
Generators
// The * in function* marks our function as a generator.
function* numbers() {
// Each yield in the generator provides one value to the loop.
yield 1;
yield 2;
yield 3;
}
// generators are iterable
const results = [];
for (const n of numbers()) {
results.push(n);
}
results;
//Result:
[1, 2, 3]
// converted to an array
function* letters() {
yield 'a';
yield 'b';
}
Array.from(letters());
Result:
['a', 'b']
// another example
function* numbers() {
let x = 1;
yield x;
x += 1;
yield x;
}
Array.from(numbers());
// Result:
[1, 2]
// and another one
function* numbersBelow(maximum) {
for (let i=0; i<maximum; i++) {
yield i;
}
}
Array.from(numbersBelow(3));
Result:
[0, 1, 2]
yield
is likereturn
but we can do it multiple times