Ответ 1
Обычно он создает "итератор", поэтому вы можете дать результат по одному.
Аналогично работе С# yield.
Официальная информация
Пример
"Бесконечная" последовательность чисел Фибоначчи (несмотря на поведение около 2 ^ 53):
function* fibonacci() {
let [prev, curr] = [0, 1];
for (;;) {
[prev, curr] = [curr, prev + curr];
yield curr;
}
}
Генераторы могут повторяться в циклах:
for (n of fibonacci()) {
// truncate the sequence at 1000
if (n > 1000)
break;
print(n);
}
Генераторы являются итераторами:
let seq = fibonacci();
print(seq.next()); // 1
print(seq.next()); // 2
print(seq.next()); // 3
print(seq.next()); // 5
print(seq.next()); // 8