中止所有axios挂起的请求并创建新请求



我正在为API请求使用axios,在这种情况下,我希望中止所有正在运行/挂起的请求,并使用另一个API创建新请求。

尝试过低于代码

async getOldResponse() {
const response_old: any = await this.axios.post("/search_old", this.searchData);
console.log(response_old)
}
async getOldOtherResponse() {
const response_old_second: any = await this.axios.post("/search_old_second", this.searchData);
console.log(response_old_second);
}
async getNewSearch() {
// here i want to cancel all pending requests.
const CancelToken = this.axios.CancelToken;
const source = CancelToken.source();
source.cancel('All previous pending request cancelled');
const response: any = await this.axios.post("/search_new", this.searchData);
console.log(response);
}
ngOnInit() {
this.getOldResponse();
this.getOldOtherResponse();
this.getNewSearch();
}

基本上我想中止/search_old&search_old_secondAPI请求并创建search_new

您可以使用取消

const CancelToken = axios.CancelToken;
const source = CancelToken.source();
axios.get('/user/12345', {
cancelToken: source.token
}).catch(function (thrown) {
if (axios.isCancel(thrown)) {
console.log('Request canceled', thrown.message);
} else {
// handle error
}
});
axios.post('/user/12345', {
name: 'new name'
}, {
cancelToken: source.token
})
// cancel the request (the message parameter is optional)
source.cancel('Operation canceled by the user.');

我对此不确定,但据我记忆所及,情况会是这样的。

取自axios文档https://github.com/axios/axios

/* create cancel token */
const CancelToken = this.axios.CancelToken;
const source = CancelToken.source();
/* fire requests whose only purpose is to be canceled */
const response_old: any = await this.axios({
method: 'post',
cancelToken: source.token,
url: '/search_old',
data: this.searchData
})
const response_old_second: any = await this.axios({
method: 'post',
cancelToken: source.token,
url: '/search_old_second',
data: this.searchData
})
/* cancel all previous pending requests */
source.cancel('optional message')
/* fire new request */
const response: any = await this.axios.post("/search_new", this.searchData);

最新更新