> For the complete documentation index, see [llms.txt](https://strctr.gitbook.io/programming/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://strctr.gitbook.io/programming/01-languages/javascript/01-language/e-controls/e3-generators/04-generator-next.md).

# 04. Generator .next()

Функция`generator.next()` имеет две формы:

* `generator.next()` продолжает выполнение функции генератора до следующего `yield`.
* `generator.next(x)` подставляет в функцию-генератор на место текущего приостановленного `yield` значение `x` и продолжает выполнение до следующего `yield`.

```javascript
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` передать какое-либо значение, то оно не будет передано в функцию-генератор.
