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?