axios 上一次请求没有结束,下一次请求开始,取消上一次请求
时间: 2023-08-05 18:35:51 浏览: 99
vue axios请求频繁时取消上一次请求的方法
可以使用`axios`提供的`CancelToken`来取消请求。具体实现步骤如下:
1. 创建`CancelToken`对象并保存到一个变量中。
```javascript
const source = axios.CancelToken.source();
```
2. 在发送请求时,将`CancelToken`对象作为配置的`cancelToken`属性值传递给`axios`。
```javascript
axios.get('/api/data', {
cancelToken: source.token
})
```
3. 如果需要取消请求,调用`CancelToken`对象的`cancel`方法。
```javascript
source.cancel('取消请求');
```
完整示例代码如下:
```javascript
let source = null;
// 发送请求
function fetchData() {
// 取消上一次请求
if (source) {
source.cancel('取消请求');
}
// 创建 CancelToken 对象
source = axios.CancelToken.source();
return axios.get('/api/data', {
cancelToken: source.token
})
.then(res => {
// 处理请求结果
})
.catch(err => {
// 处理请求错误(如果不是取消请求导致的错误)
if (!axios.isCancel(err)) {
// 处理错误
}
})
}
```
在这个示例中,每次发送请求时,会先取消上一次请求(如果存在),然后创建一个新的`CancelToken`对象,并将其作为请求配置的`cancelToken`属性值传递给`axios`。如果需要取消请求,只需要调用`CancelToken`对象的`cancel`方法即可。同时,为了避免取消请求导致的错误,需要在`catch`块中判断错误类型是否为`Cancel`类型。
阅读全文