Назад к вопросам
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 мс на каждый элемент.