JavaScript Generator.next() — наступне значення генератора


Метод next() проганяє генератор до наступного yield і повертає об'єкт { value, done }.

автор: NagarD

Загальний опис

value — те, що віддав yield. done стає true, коли генератор закінчився.

Але є річ, про яку майже ніхто не знає: у next() можна передати значення всередину. Воно стане результатом того yield, на якому генератор стояв.

Тобто спілкування двобічне: генератор віддає значення назовні через yield, а зовнішній код відповідає йому через next(відповідь). Саме на цьому колись будували асинхронність — до появи async/await.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
next 39+ 26+ 10+ 26+ 13+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
next 39+ yes yes 10+

Приклади

+ запропонувати свій приклад у пісочниці

Двобічний обмін: yield віддає, next() відповідає.

function* dialog() {
    const name = yield 'Як вас звати?';
    const age = yield 'Скільки вам років, ' + name + '?';

    return name + ', ' + age;
}

const it = dialog();

console.log(it.next().value);        // 'Як вас звати?'
console.log(it.next('Іван').value);  // 'Скільки вам років, Іван?'
console.log(it.next(30));            // { value: 'Іван, 30', done: true }

// після кінця — завжди undefined
console.log(it.next()); // { value: undefined, done: true }
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід