04. Generator .next()
Функцияgenerator.next()
имеет две формы:
generator.next()
продолжает выполнение функции генератора до следующегоyield
.generator.next(x)
подставляет в функцию-генератор на место текущего приостановленногоyield
значениеx
и продолжает выполнение до следующегоyield
.
function* gen() {
// Передать вопрос во внешний код и подождать ответа
let result = yield "Сколько будет 2 + 2?";
console.log(result);
}
let generator = gen();
let question = generator.next().value; // "Сколько будет 2 + 2?"
setTimeout(() => generator.next(4), 2000);
Переданное значение всегда передается в текущий остановленный yield
, а на следующем шаге вернется значение из следующего yield
. Первый вызов next()
запускает генератор, и приостанавливается на первом yield
. Если в начальный next
передать какое-либо значение, то оно не будет передано в функцию-генератор.
Last updated
Was this helpful?