Как происходит передача значения генератору?

Имеется следующий код:

function* gen() {
  let result = yield "2 + 2 = ?";
  console.log(result);
}

let generator = gen();
let question = generator.next().value;
generator.next(4); // 4

Как происходит передача значения генератору в данном случае, да и вообще, в целом? Ибо не до конца понятен этот момент, особенно в строке generator.next(4);, где, как я думаю, значение как раз должно передаваться в следующий yield, однако его нет.


Ответы (1 шт):

Автор решения: Vasily

Когда вы только получаете generator то Вам нужно сначала как-бы "проинициализировать" его, вызвав .next() без параметров:

gen.next()

После этого можно передавать параметры:

function * generator () {
    const input_one = yield "Первое значение"
    return input_one
}

const gen = generator()

gen.next()
gen.next("Второе значение").value // Второе значение
→ Ссылка