Есть запрос
let CancelToken = axios.CancelToken;
let cancel;
loadData: _.debounce(function (paramLogOut=false) {
if (cancel != undefined && paramLogOut) {
cancel();
return true;
}
axios
.post(params.url, params.data, {
cancelToken: new CancelToken(function executor(c) {
cancel = c;
})
})
.then(response => {
... response
})
.catch((error) => {
if (!axios.isCancel(error)) {
this.showNoty('error', 'Что-то пошло не так... Данные не удалось загрузить');
console.error(error);
}
})
}, 75)
Также есть к примеру функция для выхода (log out):
logOut() {
if (window.location.origin.search('127.0.0.1:9090') !== -1) {
window.location.href = app.$axios.defaults.baseURL + '/Account/Logout';
} else {
window.location.href = '/Account/Logout';
}
}
Суть проблемы
Когда пользователь заходит / делает возможные настройки и т.д. ... работает запрос.
Запрос может длится исходя от настроек разное время.
Если в момент начала запроса нажать на "Выйти" (Log out) то window.location.href ждёт окончания этого запроса, потом срабатывает переход и разлогивание....
Я использовал закрытие запроса (axios cancel), чтобы очередь дошла быстрее до перехода.
Запрос кэнселится, но window.href не сразу отрабатывает. Не сразу отрабатывает когда есть этот запрос даже если закрытый уже. В остальных случаях моментально переход происходит.