此代码取消GET请求,但不能中止POST调用。
如果我先发送GET请求,并且我没有通过abortAll
方法取消它们,它们只是自己完成这个令牌,自己取消,并且不处理下一个请求?我错过了什么?谢谢,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();
}
}
5条答案
按热度按时间c6ubokkw1#
我发现你可以用这种方式取消POST请求,我误解了这个文档部分。在前面的代码中,我把cancelToken传递给POST数据请求,而不是作为一个axios设置。
kadbb4592#
使用cancelToken和source在新请求时取消以前的Axios请求。
https://github.com/axios/axios#cancellation
prdp8dxp3#
使用内部组件DidMount生命周期挂钩:
注:对于POST请求,请将cancelToken作为第3个参数传递
s6fujrry4#
也许我错了,但是每个请求应该有一个唯一的源对象。
c90pui9n5#
使用ReactJs的最简单实施