Если пользователь переключает табы или быстро вводит текст в инпут, старые фетч-запросы продолжают лететь по сети и могут затереть актуальные данные
let currentController = null;
async function searchData(query) {
// Отменяем предыдущий запрос, если он еще выполняется
if (currentController) {
currentController.abort();
}
currentController = new AbortController();
try {
const res = await fetch(`/api/search?q=${query}`, {
signal: currentController.signal // Передаем сигнал отмены
});
const data = await res.json();
renderResults(data);
} catch (err) {
if (err.name === 'AbortError') {
console.log('Запрос отменен, все в порядке');
}
}
}