封装了axios,请求状态是200,但then和catch 方法都进去了

发布于 2022-09-07 08:51:43 字数 769 浏览 10 评论 0

my_axios[method] = function (uri, data, config) {
    return new Promise(function (resolve, reject) {
      instance[method](uri, data, config)
        .then((respone) => {
          console.log('成功')
          if (respone.status) {
            resolve(respone);
          } else {
            if (respone.msg.match(/[0-9]+/)[0] === '302') {
              Vue.$message.error('登录过期,请重新登录')
              Vue.$router.push('/login')
            }
            resolve(respone);
          }
        })
        .catch((response) => {
          console.log('失败')
          Vue.$message.error('服务器错误,请稍后再试')
          reject(response)
        })
    })
  }

clipboard.png

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

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

发布评论

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

评论(3

蝶舞 2022-09-14 08:51:43

“成功”可以被打印出来,那么表示你的instance[method]这个promise是resolve了的。

我猜:你的代码在console.log('成功')之后,resolve(...)之前报错了

建议你在catch里面把response在控制台打印出来,看看是不是上面的then中的逻辑有错误(比如,上面then中的response实际上是undefined)

关于从前 2022-09-14 08:51:43

emmm 我们是这么封的

my_axios[method] = function() {
    return instance[method].apply(this, argument) 
        .then(res => {
            ...
            if (...) return Promise.resolve(...)
            else return Promise.reject({
                type: 'something wrong',
                payload: res
            })
        })
        .catch(err => Promise.reject({
            type: 'request failed',
            payload: err
        }))
}
山人契 2022-09-14 08:51:43

'302'去掉引号

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