Sobes.tech
Назад к вопросам
Middle
4

// Как можно оптимизировать этот асинх-ый код в цикле, чтобы промисы выполнялись асинхронно async function processItems() { const items = [1, 2, 3]; for (const item of items) { await new Promise((resolve) => setTimeout(resolve, 100)); console.log(item); } } processItems();

Компании, где спрашивали
Мыс

Ответ от нейросети

sobes.tech AI

В исходном коде промисы выполняются последовательно из-за использования 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 мс на каждый элемент.