// Как можно оптимизировать этот асинх-ый код в цикле, чтобы промисы выполнялись асинхронно

Пример оптимизации:

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

Что ответить на собеседовании

Пример оптимизации:

Подробный разбор

Ответ с пояснениями

Условие

// Как можно оптимизировать этот асинх-ый код в цикле, чтобы промисы выполнялись асинхронно

async function processItems() { const items = [1, 2, 3]; for (const item of items) { await new Promise((resolve) => setTimeout(resolve, 100)); console.log(item); } }

processItems();

Ответ

В исходном коде промисы выполняются последовательно из-за использования await внутри цикла for...of. Чтобы запустить все промисы параллельно и дождаться их завершения, можно собрать промисы в массив и применить Promise.all.

Пример оптимизации:

async function processItems() {
  const items = [1, 2, 3];
  const promises = items.map(async (item) => {
    await new Promise((resolve) => setTimeout(resolve, 100));
    console.log(item);
  });
  await Promise.all(promises);
}

processItems();

Такой подход запускает все таймауты одновременно, и вывод элементов происходит примерно через 100 мс, а не последовательно с задержкой 100 мс на каждый элемент.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку