封装后的网络请求工具js如下:

    这是什么原因呢?因为封装axios一个重要的目的就是希望能够对错误进行统一处理,不用在每一次发起网络请求的时候都去处理各种异常情况,将所有的异常情况都在工具js中进行统一的处理。但是这种方式也带来一个问题,就是我在发起网络请求的时候,一般都会开启一个进度条,当网络请求结束时,不论请求成功还是失败,我都要将这个进度条关闭掉,而失败的处理我都统一写在工具js里边了,因此就没在请求失败时关闭进度条了,解决这个问题,有两种方案:

    2.第二种解决方案就是大家看到的,我返回一个Promise.resolve(err),则这个请求不会就此结束,错误的message我已经弹出来了,但是这条消息还是会继续传到then中,也就是说,无论请求成功还是失败,我在成功的回调中都能收到通知,这样我就可以将loading关闭了,比如下面这个登录请求:

    1. this.loading = true;
    2. this.postRequest('/login', {
    3. username: this.loginForm.username,
    4. }).then(resp=> {
    5. if (resp && resp.status == 200) {
    6. _this.getRequest("/config/hr").then(resp=> {
    7. if (resp && resp.status == 200) {
    8. var data = resp.data;
    9. _this.$router.replace({path: path == '/' || path == undefined ? '/home' : path});
    10. }
    11. })
    12. }
    13. });