直奔主题吧,首先看一下官网的例子一共两个方法
方法1、cancel token的形式
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 {
// 处理错误
}
});
axios.post('/user/12345', {
name: 'new name'
}, {
cancelToken: source.token
})
// 取消请求(message 参数是可选的)
source.cancel('Operation canceled by the user.');
理解一下这个方法,就是将cancelToken作为一个参数传到请求里面,然后定位到这个请求。
第一次尝试这个方法的时候无论如何也没成功,当时以为只要有这个参数就可以取消请求,其实取消操作是source.cancel()
当时把source.cancel('Operation canceled by the user.');
认为是设置返回参数的函数,实际不然,这就是执行取消的方法
方法2、通过传递一个executor函数到CancenToken的构造函数来创建cancelToken
const CancelToken = axios.CancelToken;
let cancel;
axios.get('/user/12345', {
cancelToken: new CancelToken(function executor(c) {
// executor 函数接收一个 cancel 函数作为参数
cancel = c;
})
});
// cancel the request
cancel();