Обработка аксиомов отменяется в цикле

63
6

У меня есть следующий сценарий

const config = {
timeout: 30000,
headers: {
Authorization: ''
},
cancelToken: cancelSource.token
};

for (var i = 0; i < data.length; i++) {
let itr = 0;
axios
.post("/my/url", "", config)
.then(response => {
if (response.status === 200) {
if (i === itr) {
//set state here
}
}
})
.catch(error => {
if (axios.isCancel) {
// How to know if the cancel stops already?
}
});
}

Например: у меня есть 16 предметов и 8 предметов были отменены. Как узнать, выполнено ли отмена? Поэтому я могу установить некоторую пост-обработку.

спросил(а) 2021-01-19T17:37:33+03:00 6 месяцев назад
1
Решение
64

axios.isCancel - это функция, которая ожидает ошибку как параметр. Но вы называете это ключом. Так

+ Изменить

  .catch(error =>{
if(axios.isCancel){
// How to know if the cancel stops already?
}
});

к

  .catch(error =>{
if(axios.isCancel(error)){
// How to know if the cancel stops already?
}
});

с вышеуказанным изменением вы сможете определить, когда запрос отменен. Вы можете просто играть с локальной переменной для управления полученными данными, пока она не будет отменена. Причина, по которой вам нужно использовать локальную переменную здесь, потому что setState не разрешен внутри цикла. Поэтому вставьте все данные в массив и, наконец, назначьте этот массив состоянию компонента вне цикла

ответил(а) 2021-01-19T17:37:33+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема