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