Когда генератор выполняет оператор yield
variable = yield value;
, он отправляет value
самому последнему из next()
. Затем он ждет другого звонка на next()
. Значение, переданное в качестве аргумента для этого вызова, используется в качестве значения этого выражения yield
, которое присваивается variable
.
Затем оно продолжается с остальной частью кода в генераторе. Следующее использование yield
повторяет вышеописанный процесс.
Это так, потому что JavaScript объединяет отправку и получение ввода в одну операцию. Первый вход в генератор поступает через список параметров, все будущие входы поступают из yield
, который получает значения из соответствующих вызовов next()
. Из-за этого порядка операций он должен отправить до последнего yield
.