Проверяет знание AbortController и AbortSignal — ключевого механизма отмены асинхронных операций в браузере и Node.js.
Когда пользователь уходит со страницы или меняет фильтр, старые запросы становятся ненужными. Если их не отменять, они продолжат занимать сеть, память и могут перезаписать актуальные данные устаревшим ответом. Для решения этой задачи в браузере есть AbortController и связанный с ним AbortSignal.
Контроллер создаёт сигнал, который можно передать в асинхронную операцию. Вызов abort() переводит сигнал в состояние "прервано", и операция, слушающая этот сигнал, немедленно завершается с ошибкой AbortError.
const controller = new AbortController();
const { signal } = controller;
fetch('/api/search?q=react', { signal })
.then(res => res.json())
.then(data => console.log(data))
.catch(err => {
if (err.name === 'AbortError') {
console.log('Запрос отменён');
}
});
// Отменяем, если пользователь ввёл новый запрос
controller.abort();
useEffect через возвращаемую функцию.function fetchWithTimeout(url, ms) {
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), ms);
return fetch(url, { signal: controller.signal })
.finally(() => clearTimeout(timer));
}
Итог: AbortController — стандартный способ отмены асинхронных операций в современном JavaScript. Применяй его везде, где запрос может стать неактуальным, чтобы не тратить ресурсы и не получать гонки данных.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию