当前位置:Gxlcms > JavaScript > AngularJS中的拦截器实例详解

AngularJS中的拦截器实例详解

时间:2021-07-01 10:21:17 帮助过:9人阅读

AngularJS中的拦截器实例详解

异步操作

有时候需要在拦截器中做一些异步操作。幸运的是, AngularJS 允许我们返回一个 promise 延后处理。它将会在请求拦截器中延迟发送请求或者在响应拦截器中推迟响应。

下面是项目中用到的代码。

  1. ZbtjxcApp.factory('myHttpInterceptor', ['$q', '$window','$location', function($q, $window,$location) {
  2. return {
  3. // 全局响应
  4. 'response': function(response) {
  5. // 这里还可以利用promise做异步处理,目前不用做,好像也能满足需求
  6. switch (response.status) {
  7. case (200):
  8. if (response.data) {
  9. //这里可以做自己相应的处理
  10. if (response.data.code == 100100) {
  11. $window.location.href = "/login.html";
  12. }
  13. /*else if(response.data.code = 100200) {
  14. $location.path('/unauthorized');
  15. }*/
  16. }
  17. break;
  18. case (500):
  19. //后期在处理
  20. console.log("服务器正忙 -- 500");
  21. break;
  22. case (404):
  23. console.log("not found -- 404");
  24. break;
  25. default:
  26. console.log("服务器正忙");
  27. }
  28. return response;
  29. }
  30. };
  31. }]).config(['$httpProvider', function($httpProvider) {
  32. $httpProvider.interceptors.push('myHttpInterceptor');
  33. }]);
  34. ZbtjxcApp.factory('pageService', ['$http', function($http) {
  35. var getPageList = function(geturl, getdata) {
  36. return $http.get(geturl, {
  37. params: getdata
  38. });
  39. }
  40. return {
  41. getPageList: getPageList
  42. };
  43. }]);

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

人气教程排行