详解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 相关文章推荐
jquery 表单进行客户端验证demo
Aug 24 Javascript
jquery实现图片随机排列的方法
May 04 Javascript
jQuery拖动元素并对元素进行重新排序
Dec 30 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
Aug 18 Javascript
Javascript中return的使用与闭包详解
Jan 11 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
Mar 14 Javascript
vue使用Axios做ajax请求详解
Jun 07 Javascript
p5.js实现斐波那契螺旋的示例代码
Mar 22 Javascript
妙用缓存调用链实现JS方法的重载
Apr 30 Javascript
angular4强制刷新视图的方法
Oct 09 Javascript
Node中对非阻塞I/O、事件循环的知识点总结
Jan 05 Javascript
基于Cesium绘制抛物弧线
Nov 18 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
一个分页的论坛
2006/10/09 PHP
从wamp到xampp的升级之路
2015/04/08 PHP
discuz图片顺序混乱解决方案
2015/07/29 PHP
详解php魔术方法(Magic methods)的使用方法
2016/02/14 PHP
js constructor的实际作用分析
2011/11/15 Javascript
JQuery实现简单验证码提示解决方案
2012/12/20 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
2013/01/07 Javascript
jQuery实现鼠标划过修改样式的方法
2015/04/14 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
2015/08/26 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
Vue实现内部组件轮播切换效果的示例代码
2018/04/07 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
详解如何用webpack4从零开始构建react开发环境
2019/01/27 Javascript
Jquery实现无缝向上循环滚动列表的特效
2019/02/13 jQuery
利用python爬取软考试题之ip自动代理
2017/03/28 Python
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
解决更改AUTH_USER_MODEL后出现的问题
2020/05/14 Python
python如何写出表白程序
2020/06/01 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
2020/09/30 Python
详解使用canvas保存网页为pdf文件支持跨域
2018/11/23 HTML / CSS
美国校园市场:OCM
2017/06/08 全球购物
英国最大的女士服装零售商:Bonmarché
2017/08/17 全球购物
英国假发网站:Hothair
2018/02/23 全球购物
Quiksilver荷兰官方网站:冲浪和滑雪板
2019/11/16 全球购物
中专毕业生自我鉴定
2013/11/21 职场文书
优秀研究生自我鉴定
2013/12/04 职场文书
大学生村官任职感言
2014/01/09 职场文书
药品营销策划方案
2014/06/15 职场文书
员工试用期自我评价
2014/09/18 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
2015圣诞节贺卡寄语
2015/03/24 职场文书