> В чем разница последовательных и параллельных запросов и как реализовать параллельные запросы в JavaScript? (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: циан, Яндекс

Стек: JavaScript

> Пример ответа

Основное различие между последовательными и параллельными запросами - в способе выполнения и времени ожидания. Последовательные запросы выполняются один за другим: следующий начинается только после завершения предыдущего. Это приводит к суммированию времени всех запросов (например, три запроса по 1 секунде займут 3 секунды). Параллельные запросы запускаются одновременно, и общее время равно времени самого медленного запроса (в примере - около 1 секунды). Параллельный подход эффективнее для независимых операций, но может нагружать сеть или сервер.

В JavaScript параллельные запросы реализуются с помощью Promise.all, Promise.allSettled или Promise.race. Пример с fetch:

JAVASCRIPT
// Параллельные запросы
const urls = ['/api/user', '/api/posts', '/api/comments'];
const requests = urls.map(url => fetch(url).then(res => res.json()));
Promise.all(requests)
.then(([user, posts, comments]) => {
console.log('Все данные получены:', user, posts, comments);
})
.catch(error => console.error('Ошибка в одном из запросов:', error));

Promise.all завершится, когда все запросы выполнены, или упадёт с ошибкой при первом сбое. Если нужно дождаться всех, даже при ошибках, используйте Promise.allSettled. Для последовательных запросов применяется async/await с циклом:

JAVASCRIPT
async function sequentialRequests(urls) {
const results = [];
for (const url of urls) {
const response = await fetch(url);
results.push(await response.json());
}
return results;
}

Выбор зависит от задачи: параллельные - для независимых данных, последовательные - когда результат одного запроса нужен для другого.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью