Проверяет понимание поведения await внутри обычного цикла и порядка выполнения асинхронных операций.
Когда вы используете await внутри обычного цикла for, JavaScript приостанавливает выполнение функции на каждой итерации до тех пор, пока промис не разрешится. Это означает, что следующая итерация начнется только после завершения предыдущей. Таким образом, запросы выполняются строго последовательно, один за другим.
Это поведение полезно, когда важен порядок выполнения или когда операции зависят друг от друга. Например, если вам нужно получить данные с сервера, а затем использовать их для следующего запроса.
async function fetchSequential() {
const urls = ['/api/1', '/api/2', '/api/3'];
const results = [];
for (const url of urls) {
const response = await fetch(url);
const data = await response.json();
results.push(data);
}
return results;
}В этом примере каждый запрос ждет завершения предыдущего, поэтому общее время выполнения равно сумме времени всех запросов.
Если вам не важен порядок и вы хотите ускорить выполнение, используйте Promise.all. Он запускает все промисы параллельно и ждет завершения всех.
async function fetchConcurrent() {
const urls = ['/api/1', '/api/2', '/api/3'];
const promises = urls.map(url => fetch(url).then(res => res.json()));
return await Promise.all(promises);
}Здесь все запросы отправляются одновременно, и общее время примерно равно времени самого медленного запроса.
Используйте await в цикле, когда операции должны выполняться по очереди и зависят друг от друга. Для независимых операций предпочтительнее Promise.all или другие методы параллельного выполнения, чтобы сократить время ожидания.
Уровень
Рейтинг:
4
Сложность:
3
Навыки
JavaScript
Node.js
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию