angualrjs 配置超时时间

Posted 知行合一

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 ![](https://images2018.cnblogs.com/blog/213419/201804/213419-20180401112302128-243653749.png)

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

代码


``` (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\');
  }
])

})();

以上是关于angualrjs 配置超时时间的主要内容,如果未能解决你的问题,请参考以下文章

看angualrjs源码中怎么判断所属的类型

AngualrJS之服务器端通信

nzSQLException 读取超时错误

测试片段不执行定时器或示例超时

angualrjs 总结 随记

AngualrJS中制作一个有关菜单的Directive