axios拦截器 返回200一定会进入then方法吗?

发布于 2022-09-07 07:38:50 字数 925 浏览 10 评论 0

我在拦截器中判断是否返回403状态,如果是就跳转到登录页面
instance.interceptors.response.use(function(response){
if(response.data.status == 200){

    return response.data;

}else if(response.data.status == 403){//用户身份过期

    Message.error(response.data.errorMessage);
    router.push({path: '/login'});//跳转到登录页面
    window.localStorage.removeItem("user");//清空用户信息   

}else{

    Message.error(response.data.errorMessage);

}
},
error => {

if (error.response) {
    switch (error.response.status) {
       case 400: Message.error(response.error.message); break;
       
    }
}
return Promise.reject(error.response.data)

});
这边的确能跳转到登录页面,但是还是进入到了then里面,如何不进入then里面
this.$axios.get('getInfo')

            .then((response) => {
                这边依旧进入,如何让他不进入这边
            })

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小梨窩很甜 2022-09-14 07:38:50

我们项目封装的拦截器 可以看一下 200 会进第一个函数吧 但是可以根据code值来判断后端返回的状态
非正常状态 返回一个 Promise.reject(res) 就可以再请求时 catch捕获 或者统一处理

/ 添加响应拦截器
Axios.interceptors.response.use(
  response => {
    const res = response.data
    if (res.code !== '1') {
      Message({
        showClose: true,
        message: res.message,
        type: 'error'
      })
      return Promise.reject(res)
    } else {
      return res
    }
  },
  error => {
    Message({
      message: error.message,
      type: 'error',
      duration: 5000
    })
    // 返回错误信息
    return Promise.reject(error)
  }
)
森林散布 2022-09-14 07:38:50

应该没有这样的方法,除非你魔改一下源码,
其实可以在then那里加一个判断

            .then((response) => {
                if(response){
                    
                }
            })
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文