Skip to main content
Практика завдань

Що таке генератори в JavaScript?

Генератори — це функції, які можуть призупиняти виконання та продовжувати його пізніше. Вони надають більше контролю над потоком виконання, на відміну від звичайних функцій.

Генератори визначаються за допомогою function* і контролюються через метод .next().

Синтаксис генератора

javascript
function* generatorFunction() { yield 'Перше значення'; yield 'Друге значення'; return 'Фінальне'; } const gen = generatorFunction(); console.log(gen.next()); // { value: 'Перше значення', done: false } console.log(gen.next()); // { value: 'Друге значення', done: false } console.log(gen.next()); // { value: 'Фінальне', done: true }

Як працює генератор

  • yield — ключове слово, яке призупиняє виконання та повертає значення.
  • .next()продовжує виконання з останнього yield.
  • done: true — вказує, що генератор завершено.

Відмінності від звичайних функцій

ОсобливістьЗвичайні функціїГенератори
Повернення значеньЛише одне returnБагато yield
Проміжні станиНіТак
Контроль потокуНіТак
Використання for..ofНіТак

Генератори та ітератори

Генератор є ітератором, який дотримується протоколу Iterable. Це дозволяє використовувати його в циклі for...of.

javascript
function* range(start, end) { for (let i = start; i <= end; i++) { yield i; } } for (const num of range(1, 5)) { console.log(num); // 1, 2, 3, 4, 5 }

Коли використовувати генератори?

Корисні для:

  • Роботи з потоками даних — наприклад, генерація послідовностей.
  • Ітерабельних структур — масиви, дерева, графи.
  • Контролю виконання — наприклад, коли потрібна ручна покрокова обробка даних.
  • Створення лінивих обчислень.
  • Симуляції асинхронної поведінки до появи async/await.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань