axios service.interceptors.response promise.reject 会触发Uncaught runtime errors:报错怎么进口解决
时间: 2024-03-27 08:38:28 浏览: 146
当使用 Axios 发送请求时,如果服务器返回状态码不是 2xx, Axios 会自动将响应拒绝(reject),并通过 Promise.catch() 方法中的回调函数处理错误。如果你在 catch() 方法中抛出了一个错误,但没有捕获这个错误,就会触发 Uncaught runtime errors 报错。
在 Axios 中,你可以使用 interceptors 来处理请求和响应。service.interceptors.response.use() 方法用于在响应被 then() 或 catch() 处理之前拦截和处理响应。如果你在这个方法中抛出了一个错误并且没有捕获它,就会触发 Uncaught runtime errors 报错。
解决此问题,你可以使用 try...catch 语句来捕获错误,或者在 reject() 方法中处理错误并返回一个新的 Promise 对象以避免未处理的错误。例如:
```javascript
service.interceptors.response.use(
response => {
// 处理响应数据
return response;
},
error => {
// 捕获错误并处理
try {
throw new Error(error);
} catch (e) {
console.log(e);
}
// 或者返回一个新的 Promise 对象以避免未处理的错误
return Promise.reject(error);
}
);
```
请注意,如果你在使用 async/await 语法,你需要使用 try...catch 语句来捕获错误。例如:
```javascript
service.interceptors.response.use(
async response => {
// 处理响应数据
return response;
},
async error => {
// 捕获错误并处理
try {
throw new Error(error);
} catch (e) {
console.log(e);
}
// 或者返回一个新的 Promise 对象以避免未处理的错误
return Promise.reject(error);
}
);
```
阅读全文