详解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 相关文章推荐
非常好的js代码
Jun 27 Javascript
javascript css在IE和Firefox中区别分析
Feb 18 Javascript
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
Mar 02 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
Sep 16 Javascript
jquery xMarquee实现文字水平无缝滚动效果
Apr 29 Javascript
javaScript使用EL表达式的几种方式
May 27 Javascript
全系IE支持Bootstrap的解决方法
Oct 19 Javascript
webpack 2.x配置reactjs基本开发环境详解
Aug 08 Javascript
Vue.js实现价格计算器功能
Mar 30 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
Aug 10 Javascript
js实现计时器秒表功能
Dec 16 Javascript
小程序富文本提取图片可放大缩小
May 26 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实现的在线人员函数库
2008/04/09 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
2013/06/18 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
2010/11/20 Javascript
js 火狐下取本地路径实现思路
2013/04/02 Javascript
通过javascript把图片转化为字符画
2013/10/24 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
Javascript遍历Html Table示例(包括内容和属性值)
2014/07/08 Javascript
实例讲解JQuery中this和$(this)区别
2014/12/08 Javascript
微信小程序 UI布局常用技巧整理总结
2016/12/05 Javascript
vue中改变选中当前项的显示隐藏或者状态的实现方法
2018/02/08 Javascript
nodejs实现超简单生成二维码的方法
2018/03/17 NodeJs
对angularJs中ng-style动态改变样式的实例讲解
2018/09/30 Javascript
微信小程序使用map组件实现解析经纬度功能示例
2019/01/22 Javascript
使用layui 的layedit定义自己的toolbar方法
2019/09/18 Javascript
Python聚类算法之基本K均值实例详解
2015/11/20 Python
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
Python 实现输入任意多个数,并计算其平均值的例子
2019/07/16 Python
Python基础类继承重写实现原理解析
2020/04/03 Python
基于python实现数组格式参数加密计算
2020/04/21 Python
蒙蒂塞罗商店:Monticello Shop
2018/11/25 全球购物
西班牙最大的在线滑板和街头服饰商店:Fillow.net
2019/04/15 全球购物
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
保荐人的岗位职责
2013/11/19 职场文书
执行总经理岗位职责
2014/02/03 职场文书
区优秀教师事迹材料
2014/02/10 职场文书
财务学生的职业生涯发展
2014/02/11 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
主题教育活动总结
2014/05/05 职场文书
设备管理实施方案
2014/05/31 职场文书
工作疏忽检讨书500字
2014/10/26 职场文书
失职检讨书大全
2015/01/26 职场文书
2016年春季开学典礼新闻稿
2015/11/25 职场文书
争做文明公民倡议书
2019/06/24 职场文书
小学生优秀作文范文(六篇)
2019/07/10 职场文书