详解AngularJS中$http缓存以及处理多个$http请求的方法


Posted in Javascript onFebruary 06, 2016

$http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。在AngularJS的实际项目中,经常需要处理多个$http请求,每个$http请求返回一个promise,我们可以把多个promise放到$q.all()方法接受的一个数组实参中去。

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类型实现缓存,即{cache:true},也可以接受一个服务。

通过factory方式创建一个服务,并把该服务注入到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");
}
})

小编总结:

● 实际上,实现缓存机制的是$cacheFactory
● 通过{cache:myCache}把缓存机制放在当前请求中
● $cacheFactory把请求api作为key,所以清楚缓存的时候,也是根据这个key来清除缓存

以上所述是小编给大家分享的AngularJS中$http缓存以及处理多个$http请求的方法,希望对大家有所帮助。

Javascript 相关文章推荐
用Javscript实现表单复选框的全选功能
May 25 Javascript
jQuery Div中加载其他页面的实现代码
Feb 27 Javascript
用JS控制回车事件的代码
Feb 20 Javascript
js去除重复字符串两种实现方法
Jan 09 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
Aug 26 Javascript
jquery实现删除一个元素后面的所有元素功能
Dec 21 Javascript
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
Mar 10 Javascript
vue.js开发环境安装教程
Mar 17 Javascript
Angular 通过注入 $location 获取与修改当前页面URL的实例
May 31 Javascript
angular1.x ui-route传参的三种写法小结
Aug 31 Javascript
layui在form表单页面通过Validform加入简单验证的方法
Sep 06 Javascript
原生Javascript+HTML5一步步实现拖拽排序
Jun 12 Javascript
JavaScript中数组添加值和访问值常见问题
Feb 06 #Javascript
详解Angularjs filter过滤器
Feb 06 #Javascript
Angularjs中如何使用filterFilter函数过滤
Feb 06 #Javascript
浅析Javascript匿名函数与自执行函数
Feb 06 #Javascript
JS通过Cookie判断页面是否为首次打开
Feb 05 #Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
Feb 05 #Javascript
jquery实现的判断倒计时是否结束代码
Feb 05 #Javascript
You might like
php入门教程 精简版
2009/12/13 PHP
如何使用php判断服务器是否是HTTPS连接
2013/07/05 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
Smarty最简单实现列表奇偶变色的方法
2015/07/01 PHP
JS 统计时间
2021/03/09 Javascript
jquery cookie实现的简单换肤功能适合小网站
2013/08/25 Javascript
js调用图片隐藏&显示实现代码
2013/09/13 Javascript
引用其它js时如何同时处理多个window.onload事件
2014/09/02 Javascript
javascript和jquery实现用户登录验证
2016/05/04 Javascript
js获取iframe中的window对象的实现方法
2016/05/20 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
Cpage.js给组件绑定事件的实现代码
2017/08/31 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
解决vue-cli创建项目的loader问题
2018/03/13 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
Laravel admin实现消息提醒、播放音频功能
2019/07/10 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
2019/10/15 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
原生javascript运动函数的封装示例【匀速、抛物线、多属性的运动等】
2020/02/23 Javascript
[02:10]DOTA2亚洲邀请赛 EG战队出场宣传片
2015/02/07 DOTA
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python实现删除Android工程中的冗余字符串
2015/01/19 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
windows10下python3.5 pip3安装图文教程
2018/04/02 Python
python梯度下降算法的实现
2020/02/24 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
python 写函数在一定条件下需要调用自身时的写法说明
2020/06/01 Python
英国知名衬衫品牌美国网站:Charles Tyrwhitt美国
2016/08/28 全球购物
EVE LOM英国官网:全世界最好的洁面膏
2017/10/30 全球购物
埃弗顿足球俱乐部官方网上商店:Everton Direct
2018/01/13 全球购物
应用电子专业学生的自我评价
2013/10/16 职场文书
Python 多线程之threading 模块的使用
2021/04/14 Python
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS
Python+tkinter实现高清图片保存
2022/03/13 Python