axios service.interceptors.response response可以返回promise.reject吗?并列举案例
时间: 2024-03-27 12:38:47 浏览: 201
是的,axios的response拦截器可以返回`Promise.reject()`来拒绝响应。这在处理异常响应或需要中断请求的情况下非常有用。以下是一些案例:
1. 处理错误响应
```javascript
axios.interceptors.response.use(response => {
// 如果响应状态码不是200,说明请求失败
if (response.status !== 200) {
return Promise.reject(new Error('请求失败'));
}
return response;
}, error => {
// 处理请求错误
return Promise.reject(error);
});
```
在这个例子中,我们使用response拦截器来检查响应的状态码。如果状态码不是200,则返回一个被拒绝的promise,以便在catch方法中处理该错误。
2. 中断请求
```javascript
let cancel;
axios.interceptors.request.use(config => {
config.cancelToken = new axios.CancelToken(c => {
cancel = c;
});
return config;
});
// 调用cancel方法来中断请求
cancel();
axios.get('/api/data', {
cancelToken: new axios.CancelToken(c => {
cancel = c;
})
}).then(response => {
console.log(response.data);
}).catch(error => {
if (axios.isCancel(error)) {
console.log('请求被中断');
} else {
console.log('请求失败');
}
});
```
在这个例子中,我们使用request拦截器来添加一个cancelToken,以便在需要中断请求时调用cancel方法。如果调用了cancel方法,则返回一个被拒绝的promise,以便在catch方法中处理该错误。
阅读全文