angualrjs 配置超时时间

timeout 1


本想通过$httpProvider的defaults属性配置timeout时间, defaults中没有这个属性.
https://docs.angularjs.org/api/ng/provider/$httpProvider#defaults

timeout 2


在拦截器中为request的config配置timeout, 在response中根据xhrStatus=timeout来处理超时. 奈何response中没找到这个xhrStatus
213419-20180401112302128-243653749.png

官网里说status=-1表示请求被取消, timeout时就会取消请求, 那就用这个来判断吧
https://docs.angularjs.org/api/ng/service/$http#$http-returns
213419-20180401112622577-930828619.png
213419-20180401112828779-1402036288.png

代码


(function() {

  angular.module("mobile")

    .factory('HttpInterceptor', ['$q',
      function($q) {
        return {
          request: function(config) {
            // 设置超时时间, 毫秒
            config.timeout = 1;

            if (config.url.search("service/") < 0)
              return config;
            if (localStorage.getItem('token')) {
              config.params = config.params || {};
              config.params['token'] = localStorage.getItem('token');
              config.params['t'] = new Date().getTime();
            }
            return config;
          },
          requestError: function(err) {
            return $q.reject(err);
          },
          response: function(res) {
            console.log('res: ',res);

            if(res.statusText=='timeout')
            {
              console.log('timeout: ',111);
            }
            if (res.data && res.data.code) {
              switch (res.data.code) {
                case '000':
                  return res
                case '100':
                  // alert(res.data.msg)
                  // 账号未注册
                  localStorage.removeItem('token');
                  localStorage.removeItem('groupid');
                  return res
                case '200':
                  // session 无效
                  console.log(res.data.msg)
                  localStorage.removeItem('token');
                  localStorage.removeItem('groupid');
                  window.location.href = '';
                  break
              }
            }

            return res
          },
          responseError: function(err) {
            if (-1 === err.status) {
              // 请求超时
              alert('请求超时');
            } else if (500 === err.status) {
              // 处理各类自定义错误
            } else if (501 === err.status) {
              // ...
            }
            return $q.reject(err);
          }
        };
      }
    ])

    .config(['$httpProvider',
      function($httpProvider) {
        $httpProvider.interceptors.push('HttpInterceptor');
      }
    ])

})();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值