Как будешь работать с параллельными запросами?
DOM и браузер
Параллельные запросы выполняют одновременно через `Promise.all`/`allSettled` (запуская их сразу), а не последовательными `await`. Способ зависит от того, нужны ли все результаты и как обрабатывать ошибки.
Запуск параллельно
Промисы стартуют сразу при создании — важно не «ждать» их по очереди:
// Последовательно (медленно)
const a = await fetchA();
const b = await fetchB();
// Параллельно (быстро)
const [a, b] = await Promise.all([fetchA(), fetchB()]);Выбор комбинатора
- Promise.all — нужны все результаты, при первой ошибке падает всё (fail-fast).
- Promise.allSettled — нужны все, но терпимы ошибки: возвращает статусы каждого.
- Promise.race — достаточно первого завершившегося (таймауты).
- Promise.any — нужен первый успешный.
const results = await Promise.allSettled(urls.map((u) => fetch(u)));Ограничение параллелизма
Много запросов сразу могут перегрузить сервер. Их батчат — запускают по N одновременно (пул):
// упрощённо: чанки по 5
for (const chunk of chunks(tasks, 5)) {
await Promise.all(chunk.map((t) => t()));
}Или используют библиотеки (p-limit).
Дополнительно
- Отмена — через
AbortController. - Обработка ошибок —
try/catchилиallSettled.
Коротко для собеседования
Параллельные запросы — запустить сразу и агрегировать через Promise.all (все, fail-fast), allSettled (все со статусами), race/any (первый). Не делать последовательные await. Для большого числа — ограничивать параллелизм (пул, p-limit), отменять через AbortController.