Как вызов метода `next ()` со значением заменяет предыдущее выражение `yield` в генераторах javascript? - PullRequest
0 голосов
/ 28 апреля 2020

Это от MDN :

gen.next(value)
Значение будет присвоено в результате выражения yield. Например, в variable = yield expression значение, переданное функции .next(), будет присвоено variable.

Кроме того, это из Средний товар :

Второй next(10) вызов заменяет все первое yield выражение на 10

Итак, мой вопрос, как next(value) заменяет «предыдущий "дать выражение? как это работает за кулисами. Я читал об итераторах, но не могу понять, как next() работает в этом случае.

1 Ответ

2 голосов
/ 28 апреля 2020

Когда генератор выполняет оператор yield

variable = yield value;

, он отправляет value самому последнему из next(). Затем он ждет другого звонка на next(). Значение, переданное в качестве аргумента для этого вызова, используется в качестве значения этого выражения yield, которое присваивается variable.

Затем оно продолжается с остальной частью кода в генераторе. Следующее использование yield повторяет вышеописанный процесс.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...