gpt4 book ai didi

javascript - 无法通过 CancelToken 取消 Axios 发布请求

转载 作者:行者123 更新时间:2023-12-04 02:31:11 24 4
gpt4 key购买 nike

此代码取消 GET 请求但不能中止 POST 调用。
如果我先发送 GET 请求并且我不通过 abortAll 取消它们方法,他们只是自己完成这个 token 自己取消并且不适用于下一个请求?
我错过了什么?
谢谢,约翰

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();

}

}

最佳答案

我发现您可以通过这种方式取消发布请求,我误解了this documentation part .
在之前的代码中,我已将 cancelToken 传递给 POST 数据请求,而不是作为 axios 设置。

import axios from 'axios'


var CancelToken = axios.CancelToken;
var cancel;

axios({
method: 'post',
url: '/test',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
},
cancelToken: new CancelToken(function executor(c) {
// An executor function receives a cancel function as a parameter
cancel = c;
})
}).then(()=>console.log('success')).catch(function(err){

if(axios.isCancel(err)){

console.log('im canceled');

}
else{

console.log('im server response error');

}

});
// this cancel the request
cancel()

关于javascript - 无法通过 CancelToken 取消 Axios 发布请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44852054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com