Обработка отмены осей в цикле - PullRequest
0 голосов
/ 27 сентября 2018

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

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 предметов были отменены.Как я узнаю, что отмена сделана?Так что я могу установить некоторую пост-обработку здесь.

1 Ответ

0 голосов
/ 27 сентября 2018

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 не допускается внутри цикла.Поэтому поместите все данные в массив и, наконец, назначьте этот массив состоянию компонента вне цикла

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...