116 lines
2.2 KiB
Markdown
116 lines
2.2 KiB
Markdown
---
|
|
title: 响应拦截器
|
|
---
|
|
|
|
# {{ $frontmatter.title }}
|
|
|
|
::: tip {{ $frontmatter.title }}
|
|
用于 `response` 到达 `then` 之前,或 `error` 到达 `catch` 之前拦截响应。
|
|
|
|
通常会用于处理错误,但对于处理错误而言,使用 `errorHandler` 会是更好的选择。
|
|
:::
|
|
|
|
## 添加响应拦截器
|
|
|
|
可以添加响应拦截器。
|
|
|
|
```ts
|
|
import axios from 'axios-miniprogram';
|
|
|
|
axios.interceptors.response.use(
|
|
function (response) {
|
|
// 在 then 之前做些什么
|
|
return response;
|
|
},
|
|
function (error) {
|
|
// 在 catch 之前做些什么
|
|
return Promise.reject(error);
|
|
},
|
|
);
|
|
```
|
|
|
|
也可以添加多个响应拦截器,先添加的会先执行。
|
|
|
|
```ts
|
|
import axios from 'axios-miniprogram';
|
|
|
|
// 先添加 先执行
|
|
axios.interceptors.response.use(
|
|
function (response) {
|
|
// 在 then 之前做些什么
|
|
return response;
|
|
},
|
|
function (error) {
|
|
// 在 catch 之前做些什么
|
|
return Promise.reject(error);
|
|
},
|
|
);
|
|
|
|
// 后添加 后执行
|
|
axios.interceptors.response.use(
|
|
function (response) {
|
|
// 在 then 之前做些什么
|
|
return response;
|
|
},
|
|
function (error) {
|
|
// 在 catch 之前做些什么
|
|
return Promise.reject(error);
|
|
},
|
|
);
|
|
```
|
|
|
|
## 移除响应拦截器
|
|
|
|
可以移除不再需要的响应拦截器。
|
|
|
|
```ts
|
|
import axios from 'axios-miniprogram';
|
|
|
|
const ejectId = axios.interceptors.response.use(
|
|
function (response) {
|
|
// 在 then 之前做些什么
|
|
return response;
|
|
},
|
|
function (error) {
|
|
// 在 catch 之前做些什么
|
|
return Promise.reject(error);
|
|
},
|
|
);
|
|
|
|
// 移除响应拦截器
|
|
axios.interceptors.response.eject(ejectId);
|
|
```
|
|
|
|
## 移除所有响应拦截器
|
|
|
|
可以移除所有响应拦截器。
|
|
|
|
```ts
|
|
import axios from 'axios-miniprogram';
|
|
|
|
axios.interceptors.request.use(
|
|
function (response) {
|
|
// 在 then 之前做些什么
|
|
return response;
|
|
},
|
|
function (error) {
|
|
// 在 catch 之前做些什么
|
|
return Promise.reject(error);
|
|
},
|
|
);
|
|
|
|
axios.interceptors.request.use(
|
|
function (response) {
|
|
// 在 then 之前做些什么
|
|
return response;
|
|
},
|
|
function (error) {
|
|
// 在 catch 之前做些什么
|
|
return Promise.reject(error);
|
|
},
|
|
);
|
|
|
|
// 移除所有响应拦截器
|
|
axios.interceptors.request.clear();
|
|
```
|