angualrjs 配置超時時間
阿新 • • 發佈:2018-04-01
... eject 註冊 res cep param http switch https
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
官網裏說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 配置超時時間