詳解AngularJS中$http緩存以及處理多個$http請求的方法
$http 是 AngularJS 中的一個核心服務,用于讀取遠程服務器的數(shù)據(jù)。在AngularJS的實際項目中,經(jīng)常需要處理多個$http請求,每個$http請求返回一個promise,我們可以把多個promise放到$q.all()方法接受的一個數(shù)組實參中去。
1.處理多個$http請求
angular.module('app',[]) .controller('AppCtrl', function AppCtrl(myService){ var app = this; myService.getAll().then(function(info){ app.myInfo = info; }) }) .service('myService', function MyService($http, $q){ var myService = this; user = 'https://api...', repos = '', events = ''; myService.getData = function getData(){ return $http.get(user).then(function(userData){ return { name:userData.data.name, url:userData.data.url, repoCount: userData.data.count } }) }; myService.getUserRepos = function getUserRepos(){ return $http.get(repos).then(function(response){ return _.map(response.data, function(item){ return { name: item.name, description:item.description, starts: item.startCount } }) }) } myService.getUserEvents = function getUserEvents(){ ... } myService.getAll = function(){ var userPromise = myService.getData(), userEventsPromise = myService.getUserRepos(), userReposPromise = myService.getUserRepos(); return $q.all([userPromise, userEventsPromise, userReposPromise]).then(function(){ .... }) } })
2.$http請求緩存
$http的get方法第二個形參接受一個對象,該對象的cache字段可以接受一個bool類型實現(xiàn)緩存,即{cache:true},也可以接受一個服務。
通過factory方式創(chuàng)建一個服務,并把該服務注入到controller中去。
angular.module('app',[]) .factory("myCache", function($cacheFactory){ return $cacheFactory("me"); }) .controller("AppCtrl", function($http, myCache){ var app = this; app.load = function(){ $http.get("apiurl",{cache:myCache}) .success(function(data){ app.data = data; }) } app.clearCache = function(){ myCache.remove("apiurl"); } })
小編總結:
● 實際上,實現(xiàn)緩存機制的是$cacheFactory
● 通過{cache:myCache}把緩存機制放在當前請求中
● $cacheFactory把請求api作為key,所以清楚緩存的時候,也是根據(jù)這個key來清除緩存
以上所述是小編給大家分享的AngularJS中$http緩存以及處理多個$http請求的方法,希望對大家有所幫助。
- Angularjs中$http以post請求通過消息體傳遞參數(shù)的實現(xiàn)方法
- AngularJS $http模塊POST請求實現(xiàn)
- AngularJS出現(xiàn)$http異步后臺無法獲取請求參數(shù)問題的解決方法
- angularJS 發(fā)起$http.post和$http.get請求的實現(xiàn)方法
- 詳解AngularJS用Interceptors來統(tǒng)一處理HTTP請求和響應
- AngularJs導出數(shù)據(jù)到Excel的示例代碼
- angular2中Http請求原理與用法詳解
- angular 用攔截器統(tǒng)一處理http請求和響應的方法
- Angular的$http的ajax的請求操作(推薦)
- AngularJS基于http請求實現(xiàn)下載php生成的excel文件功能示例
相關文章
Spartacus CMS Feature selector的實現(xiàn)解析
這篇文章主要為大家介紹了Spartacus CMS Feature selector的實現(xiàn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07Angular.js與Bootstrap相結合實現(xiàn)表格分頁代碼
最近一直在學習angularjs相關知識,在學習過程中寫了一個小demo,下面把代碼思路分享給大家,感興趣的朋友一起學習2016-04-04Angularjs 動態(tài)改變title標題(兼容ios)
這篇文章主要介紹了 Angularjs 動態(tài)改變title標題(兼容ios)的相關資料,需要的朋友可以參考下2016-12-12Angular4.0中引入laydate.js日期插件的方法教程
在AngularJs中我們會不可避免的使用第三方庫,例如jquery插件庫。下面這篇文章主要給大家介紹了關于Angular4.0中引入laydate.js日期插件的相關資料,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。2017-12-12使用Angular CLI快速創(chuàng)建Angular項目的一些基本概念和寫法小結
這篇文章主要介紹了使用Angular CLI快速創(chuàng)建Angular項目的一些基本概念和寫法小結,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04Angular4.x通過路由守衛(wèi)進行路由重定向實現(xiàn)根據(jù)條件跳轉到相應的頁面(推薦)
這篇文章主要介紹了Angular4.x通過路由守衛(wèi)進行路由重定向,實現(xiàn)根據(jù)條件跳轉到相應的頁面,這個功能在網(wǎng)上商城項目上經(jīng)常會用到,下面小編給大家?guī)砹私鉀Q方法一起看看吧2018-05-05