Generator.prototype.next()

Метод next() повертає об'єкт з двома властивостями, done та value. Ви також можете передати параметр у метод next, щоб передати значення у генератор.

Синтаксис

gen.next(value)

Параметри

value
Значення, яке передається генератору. Значення буде присвоєне як результат виразу yield, тобто, у [variable] = yield [expression], значення, передане у функцію .next, буде присвоєне [variable]

Значення, що повертається

Об'єкт з двома властивостями:

  • done (булеве значення)
    • Має значення true, якщо ітератор досяг кінця послідовності перебору. В цьому випадку value за бажанням визначає повернене значення ітератора.
    • Має значення false, якщо ітератор зміг видати наступне значення послідовності. Це аналогічно тому, щоб взагалі не вказувати значення властивості done.
  • value - будь-яке значення JavaScript, повернене ітератором. Може бути пропущене, коли done дорівнює true.

Приклади

Використання next()

Наступний приклад демонструє простий генератор та об'єкт, що його вертає метод next:

function* gen() {
  yield 1;
  yield 2;
  yield 3;
}

var g = gen(); // "Generator { }"
g.next();      // "Object { value: 1, done: false }"
g.next();      // "Object { value: 2, done: false }"
g.next();      // "Object { value: 3, done: false }"
g.next();      // "Object { value: undefined, done: true }"

Передача значень генератору

В цьому прикладі next викликається зі значенням. Зауважте, що перший виклик нічого не залогував, тому що генератор початково нічого не видавав.

function* gen() {
  while(true) {
    var value = yield null;
    console.log(value);
  }
}

var g = gen();
g.next(1);
// "{ value: null, done: false }"
g.next(2);
// 2
// "{ value: null, done: false }"

Специфікації

Специфікація Статус Коментар
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Generator.prototype.next' in that specification.
Standard Початкове визначення.
ECMAScript (ECMA-262)
The definition of 'Generator.prototype.next' in that specification.
Living Standard

Сумісність з веб-переглядачами

BCD tables only load in the browser

Див. також