詳解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-07
Angular.js與Bootstrap相結合實現(xiàn)表格分頁代碼
最近一直在學習angularjs相關知識,在學習過程中寫了一個小demo,下面把代碼思路分享給大家,感興趣的朋友一起學習2016-04-04
Angularjs 動態(tài)改變title標題(兼容ios)
這篇文章主要介紹了 Angularjs 動態(tài)改變title標題(兼容ios)的相關資料,需要的朋友可以參考下2016-12-12
Angular4.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-04
Angular4.x通過路由守衛(wèi)進行路由重定向?qū)崿F(xiàn)根據(jù)條件跳轉到相應的頁面(推薦)
這篇文章主要介紹了Angular4.x通過路由守衛(wèi)進行路由重定向,實現(xiàn)根據(jù)條件跳轉到相應的頁面,這個功能在網(wǎng)上商城項目上經(jīng)常會用到,下面小編給大家?guī)砹私鉀Q方法一起看看吧2018-05-05

