Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: генераторы, асинхронность

В чём особенности асинхронных генераторов? Как их использовать для создания потоков данных?

Этот вопрос проверяет понимание асинхронных генераторов и их использование для обработки потоков данных, таких как асинхронные операции или работа с API.

Короткий ответ

Асинхронные генераторы в JavaScript позволяют выполнять генерацию значений с возможностью ожидания завершения асинхронных операций. Они работают с использованием async и yield, что делает их полезными для создания потоков данных, которые поступают постепенно. Это удобно при работе с большими наборами данных или внешними источниками, такими как API, где данные могут приходить частями.

Длинный ответ

Асинхронные генераторы — это генераторы, которые могут управлять асинхронными операциями внутри себя, используя async и await. Они позволяют возвращать значения не сразу, а постепенно, по мере выполнения асинхронных операций. Это особенно полезно, когда нужно работать с потоками данных, которые приходят частями или обрабатываются по мере их поступления, например, данные от API или работа с файлами.

Асинхронный генератор определяется с помощью ключевого слова async function*, а для получения данных из него используется for-await-of. Пример:

async function* asyncGenerator() {
	yield new Promise(resolve => setTimeout(() => resolve("First"), 1000));  
	yield new Promise(resolve => setTimeout(() => resolve("Second"), 2000));  
	yield new Promise(resolve => setTimeout(() => resolve("Third"), 3000)); 
} 
(async () => {
	for await (let value of asyncGenerator()) {
		console.log(value);  
	} 
})();

В этом примере асинхронный генератор возвращает значения через промежутки времени. Он полезен, когда вы обрабатываете данные, которые поступают по мере готовности (например, чтение файлов или данных с сервера), позволяя писать код, который выглядит как синхронный, но обрабатывает асинхронные процессы.

Уровень

  • Рейтинг:

    1

  • Сложность:

    8

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#генераторы

#асинхронность

Подпишись на React Developer в телеграм