Я обнаружил, что отменяю запросы, используя токены отмены. Какой-то выход из этой проблемы, но я прикрепил их к глобальной переменной (например, window
), поэтому каждый раз, когда делается запрос, новый токен добавляется к объекту (с его собственным ключом), и каждый раз запрос завершен, этот ключ удален.
Итак, у меня есть что-то подобное в клиентской части приложения:
window.cancellationTokens = { myOwnTokenKey: theActualToken }
Если необходимо отменить запрос (например, пользователь покидает маршрут, который получает данные на componentDidMount
), я просто делаю:
cancelRequest(nameOfTheKey);
Функция с именем cancelRequest
принимает один аргумент, то есть фактический ключ запроса, и выглядит следующим образом:
const cancelRequest = (keyName) => {
if (typeof window === 'undefined') return;
const cancelMethod = window.cancellationTokens[keyName];
if (!cancelMethod) return;
cancelMethod();
}