AngularJS中的攔截器實(shí)例詳解
創(chuàng)新互聯(lián)公司主要業(yè)務(wù)有網(wǎng)站營(yíng)銷策劃、網(wǎng)站制作、成都做網(wǎng)站、微信公眾號(hào)開發(fā)、小程序開發(fā)、H5網(wǎng)站設(shè)計(jì)、程序開發(fā)等業(yè)務(wù)。一次合作終身朋友,是我們奉行的宗旨;我們不僅僅把客戶當(dāng)客戶,還把客戶視為我們的合作伙伴,在開展業(yè)務(wù)的過(guò)程中,公司還積累了豐富的行業(yè)經(jīng)驗(yàn)、成都營(yíng)銷網(wǎng)站建設(shè)資源和合作伙伴關(guān)系資源,并逐漸建立起規(guī)范的客戶服務(wù)和保障體系。
異步操作
有時(shí)候需要在攔截器中做一些異步操作。幸運(yùn)的是, AngularJS 允許我們返回一個(gè) promise 延后處理。它將會(huì)在請(qǐng)求攔截器中延遲發(fā)送請(qǐng)求或者在響應(yīng)攔截器中推遲響應(yīng)。
下面是項(xiàng)目中用到的代碼。
ZbtjxcApp.factory('myHttpInterceptor', ['$q', '$window','$location', function($q, $window,$location) { return { // 全局響應(yīng) 'response': function(response) { // 這里還可以利用promise做異步處理,目前不用做,好像也能滿足需求 switch (response.status) { case (200): if (response.data) { //這里可以做自己相應(yīng)的處理 if (response.data.code == 100100) { $window.location.href = "/login.html"; } /*else if(response.data.code = 100200) { $location.path('/unauthorized'); }*/ } break; case (500): //后期在處理 console.log("服務(wù)器正忙 -- 500"); break; case (404): console.log("not found -- 404"); break; default: console.log("服務(wù)器正忙"); } return response; } }; }]).config(['$httpProvider', function($httpProvider) { $httpProvider.interceptors.push('myHttpInterceptor'); }]); ZbtjxcApp.factory('pageService', ['$http', function($http) { var getPageList = function(geturl, getdata) { return $http.get(geturl, { params: getdata }); } return { getPageList: getPageList }; }]);
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!