详解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 相关文章推荐
做网页的一些技巧
Feb 01 Javascript
Javascript 圆角div的实现代码
Oct 15 Javascript
JavaScript程序员应该知道的45个实用技巧
Mar 04 Javascript
jQuery简单图表peity.js使用示例
May 02 Javascript
一个可以增加和删除行的table并可编辑表格中内容
Jun 16 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
Apr 01 Javascript
JavaScript中split() 使用方法汇总
Apr 17 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
Mar 29 Javascript
JS实现留言板功能[楼层效果展示]
Dec 27 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
Aug 24 Javascript
VUE实现可随意拖动的弹窗组件
Sep 25 Javascript
Vue中props的详解
May 16 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
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
PHP读取目录下所有文件的代码
2008/01/07 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
php $_SERVER windows系统与linux系统下的区别说明
2014/02/14 PHP
一个实用的php验证码类
2017/07/06 PHP
几款极品的javascript压缩混淆工具
2007/05/16 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
2012/01/15 Javascript
jQuery制作的别致导航有阴影背景高亮模式窗口
2014/04/15 Javascript
js数组操作常用方法
2014/05/08 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
2016/02/18 Javascript
初识angular框架后的所思所想
2016/02/19 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
React 使用Hooks简化受控组件的状态绑定
2019/03/18 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
详解Vue源码中一些util函数
2019/04/24 Javascript
MySQL最常见的操作语句小结
2015/05/07 Python
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
Python可变参数用法实例分析
2017/04/02 Python
浅谈Django学习migrate和makemigrations的差别
2018/01/18 Python
pycham查看程序执行的时间方法
2018/11/29 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
Python实现二叉树的常见遍历操作总结【7种方法】
2019/03/06 Python
pytorch进行上采样的种类实例
2020/02/18 Python
Django ModelForm操作及验证方式
2020/03/30 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
一个SQL面试题
2014/08/21 面试题
二年级学生评语大全
2014/04/23 职场文书
市级文明单位申报材料
2014/05/07 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书
见习报告的格式
2014/11/04 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
质检员工作总结2015
2015/04/25 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书