Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: async/await, for...of, event loop, promise, concurrency

Что произойдёт, если использовать await внутри цикла for...of? Как это влияет на параллельность выполнения промисов?

Проверяет понимание последовательного выполнения асинхронных операций в цикле for...of и его влияние на параллельность промисов.

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

Использование await внутри цикла for...of приводит к последовательному выполнению каждой итерации: следующая итерация начинается только после завершения предыдущей. Это означает, что промисы выполняются не параллельно, а один за другим, что может замедлить выполнение, если операции независимы.

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

Последовательное выполнение асинхронных операций

Когда вы используете await внутри цикла for...of, каждая итерация приостанавливает выполнение функции до тех пор, пока промис не разрешится. Это приводит к последовательному, а не параллельному выполнению асинхронных задач. Например, если у вас есть массив URL-адресов для загрузки данных, каждый запрос будет ждать завершения предыдущего, что увеличивает общее время выполнения.

Пример кода

const urls = ['url1', 'url2', 'url3'];

async function fetchSequentially() {
  for (const url of urls) {
    const response = await fetch(url);
    console.log(await response.json());
  }
}

// Каждый fetch ждёт завершения предыдущего

Влияние на параллельность

Такой подход полезен, когда каждая операция зависит от результата предыдущей (например, цепочка вычислений). Однако для независимых задач лучше использовать Promise.all для параллельного выполнения, что сокращает время ожидания.

Вывод

Используйте await в for...of для последовательных зависимых операций, но для параллельных независимых задач применяйте Promise.all или Promise.allSettled.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

  • Node.js

    Node.js

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

#async/await

#for...of

#event loop

#promise

#concurrency

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию