【发布时间】:2019-10-22 17:31:39
【问题描述】:
我知道axios拦截器可以处理bot ok和ko
axios.interceptors.response.use(
// onFullfilled
function(axios_response) {
return axios_response;
},
// onRejected
function(axios_error) {
console.log(axios_error);
return Promise.reject(axios_error);
}
)
我的确切问题是:我怎样才能在onRejected 中抛出一个错误,以便能够在兄弟onRejected 中处理? p>
我试过了
// onFullfilled
function(axios_response) {
if (!axios_response.data) return axios_response;
const { data } = axios_response;
if (!data.status || !data.message) return axios_response;
const { status, message } = data;
console.log("status", status);
console.log("message", message);
if (status === "error") {
return Promise.reject(axios_response);
}
return axios_response;
},
但我认为这是错误的方式,因为我的拒绝没有被拦截器的 onRejected 处理程序捕获。
【问题讨论】:
-
你不能。要保持代码 DRY,请将
onRejected处理程序编写为外部函数;按名称附加它作为onRejected处理程序,并根据需要从onFullfilled处理程序调用它。 -
其实,有更好的组织方式——我会发布答案。
标签: promise axios interceptor