详解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 指南/入门基础
Nov 30 Javascript
某页码显示的helper 少量调整,另附js版
Sep 12 Javascript
基于jQuery的星级评分插件
Aug 12 Javascript
JS 无限级 Select效果实现代码(json格式)
Aug 30 Javascript
jQuery实现鼠标划过添加和删除class的方法
Jun 26 Javascript
jquery实现漂亮的二级下拉菜单代码
Aug 26 Javascript
将form表单通过ajax实现无刷新提交的简单实例
Oct 12 Javascript
JavaScript中Require调用js的实例分享
Oct 27 Javascript
vue+iview/elementUi实现城市多选
Mar 28 Javascript
纯JS开发baguetteBox.js响应式画廊插件
Jun 28 Javascript
js实现数字跳动到指定数字
Aug 25 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
Jan 05 Vue.js
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 和 MySQL 基础教程(四)
2006/10/09 PHP
discuz安全提问算法
2007/06/06 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
2014/02/18 PHP
PHP中Memcache操作类及用法实例
2014/12/12 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
php微信支付之公众号支付功能
2018/05/30 PHP
javascript 二维数组的实现与应用
2010/03/16 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
node.js中的fs.chmod方法使用说明
2014/12/18 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
jquery实现列表上下移动功能
2016/02/25 Javascript
使用svg实现动态时钟效果
2018/07/17 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
2019/09/30 Javascript
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
python实现端口转发器的方法
2015/03/13 Python
使用PyCharm配合部署Python的Django框架的配置纪实
2015/11/19 Python
详解Swift中属性的声明与作用
2016/06/30 Python
浅谈python 里面的单下划线与双下划线的区别
2017/12/01 Python
python实现NB-IoT模块远程控制
2018/06/20 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
通过实例简单了解Python中yield的作用
2019/12/11 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
python sleep和wait对比总结
2021/02/03 Python
ReVive利维肤美国官网:RéVive Skincare
2018/04/18 全球购物
丽笙酒店官方网站:Radisson Hotels
2019/05/07 全球购物
日本动漫周边服饰销售网站:Atsuko
2019/12/16 全球购物
成功的餐厅经营创业计划书
2014/01/15 职场文书
生育关怀行动实施方案
2014/03/26 职场文书
高中学生期末评语
2014/04/25 职场文书
六五普法宣传标语
2014/10/06 职场文书
2014年公务员工作总结
2014/11/18 职场文书
道歉情书大全
2015/05/12 职场文书
创业计划书介绍
2019/04/24 职场文书