Вопрос проверяет понимание стратегий обработки зависших запросов в параллельных или пачечных операциях, что важно для обеспечения отказоустойчивости и производительности приложений.
Когда вы отправляете пачку запросов (например, параллельные HTTP-вызовы), один из них может зависнуть из-за сетевых проблем, ошибок сервера или бесконечного цикла. Если просто ждать его завершения, весь процесс блокируется, что может привести к утечкам памяти, зависанию интерфейса или исчерпанию пула соединений.
Оптимальная стратегия — установить таймаут для каждого запроса. Если запрос не завершился за отведённое время, его следует отменить. Это позволяет освободить ресурсы и продолжить обработку остальных запросов. В JavaScript для этого можно использовать AbortController или Promise.race с таймером.
async function fetchWithTimeout(url, timeoutMs = 5000) {
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
try {
const response = await fetch(url, { signal: controller.signal });
return response.json();
} catch (error) {
if (error.name === 'AbortError') {
console.log('Запрос отменён по таймауту');
}
throw error;
} finally {
clearTimeout(timeoutId);
}
}
// Использование для пачки запросов
const urls = ['/api/data1', '/api/data2', '/api/data3'];
const promises = urls.map(url => fetchWithTimeout(url, 3000));
const results = await Promise.allSettled(promises);Таймауты и отмена запросов критичны в микросервисной архитектуре, при работе с внешними API, в real-time приложениях и при обработке больших объёмов данных. Это повышает отказоустойчивость и предотвращает каскадные сбои.
Вывод: всегда используйте таймауты для внешних запросов и отменяйте зависшие, чтобы не блокировать систему. Ожидание завершения оправдано только в синхронных блокирующих операциях с гарантированным временем выполнения.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
JavaScript
Node.js
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию