Проверяет понимание асинхронности в JavaScript и умение работать с параллельными запросами через Promise.all, Promise.allSettled, Promise.race и Promise.any.
Когда нужно выполнить несколько независимых запросов к серверу, важно запускать их параллельно, а не последовательно — иначе общее время будет суммой задержек. Для этого в JavaScript есть статические методы объекта Promise, каждый из которых решает свою задачу.
async function loadDashboard() {
const [user, posts, comments] = await Promise.all([
fetch('/api/user').then(r => r.json()),
fetch('/api/posts').then(r => r.json()),
fetch('/api/comments').then(r => r.json())
]);
render(user, posts, comments);
}
// Если один запрос упадёт — весь Promise.all отклонится
loadDashboard().catch(err => console.error('Ошибка загрузки', err));
const results = await Promise.allSettled([
fetch('/api/a'),
fetch('/api/b'),
fetch('/api/c')
]);
results.forEach(r => {
if (r.status === 'fulfilled') console.log('OK', r.value);
else console.warn('Fail', r.reason);
});
Метод Promise.all удобен, когда все данные критичны и без любого из них страница не имеет смысла. Promise.allSettled подходит для необязательных блоков, где часть данных может отсутствовать. Promise.race часто используют для таймаутов, а Promise.any — когда достаточно первого успешного источника.
Итог: для параллельной загрузки нескольких запросов применяйте Promise.all с async/await, а если нужно устойчиво обработать частичные ошибки — Promise.allSettled.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию