This code cancel GET requests but cant abort POST calls.
If i send GET requests first and i dont cancel them via abortAll method,they just finish by themselves this token cancel by itself and doesnt work on next requests?
What am i missing?
Thanks,John
import axios from 'axios'
class RequestHandler {
 constructor(){
  this.cancelToken = axios.CancelToken;
  this.source = this.cancelToken.source();
 }
 get(url,callback){
  axios.get(url,{
   cancelToken:this.source.token,
  }).then(function(response){
        callback(response.data);
    }).catch(function(err){
        console.log(err);
    })
 }
post(url,callbackOnSuccess,callbackOnFail){
 axios.post(url,{
        cancelToken:this.source.token,
    }).then(function(response){
        callbackOnSuccess(response.data);
    }).catch(function(err){
        callbackOnFail()
    })
}
abortAll(){
 this.source.cancel();
    // regenerate cancelToken
 this.source = this.cancelToken.source();
}
}
Cancel previous Axios request on new request with cancelToken and source.
https://github.com/axios/axios#cancellation
 // cancelToken and source declaration
 const CancelToken = axios.CancelToken;
 let source = CancelToken.source();
 source && source.cancel('Operation canceled due to new request.');
 // save the new request for cancellation
 source = axios.CancelToken.source();
 axios.post(url, postData, {
     cancelToken: source.token
 })
 .then((response)=>{
     return response && response.data.payload);
 })
 .catch((error)=>{
     return error;
 });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With