angularJs中缓存数据,免去重复发起请求的几种写法
带缓存处理的两种写法
过程:点击button触发load()方法,请求数据成后显示到页面中。如果已经请求过则从缓存中读取。
写法1:
function demo(){
if (demo.cache == undefined) {
return $http.get('https://api.github.com/users/github')
.then(function(data, status, headers){
demo.cache = data.data;
return $q(function (resolve, reject) {
resolve(demo.cache);
});
})
}else {
console.log('from cache');
return $q(function (resolve, reject) {
resolve(demo.cache);
});
}
}
// 点击加载
$scope.load = function() {
demo().then(function(data){
$scope.list = data.data;
})
}
写法2:
感觉第二种写法好些,注意细节。
function demo(){
let deferred = $q.defer(), that = this;if (that.cache == undefined) {
$http.get('https://api.github.com/users/github')
.success(function(data, status, headers){
that.cache = data;
deferred.resolve(that.cache);
})
}else {
console.log('from cache');
deferred.resolve(that.cache);
}
return deferred.promise;
}
// 点击加载
$scope.load = function() {
demo().then(function(data){
$scope.list = data;
})
}
写法3 利用闭包缓存结果
// 利用闭包缓存结果
function demo2() {
let defer = $q.defer(), cache;
return function() {
if (cache == undefined) {
$http.get('https://api.github.com/users/github')
.then((res) => {
cache = res.data;
defer.resolve(cache);
})
}else {
console.log('from cache');
defer.resolve(cache);
}
return defer.promise;
}
} // 点击加载
let startDemo = demo2();
$scope.load = function() {
startDemo().then(function(data){
$scope.list = data;
})
}
angularJs中缓存数据,免去重复发起请求的几种写法的更多相关文章
- 不要在Android的Application对象中缓存数据!
前言 在你的App中的很多地方都需要使用到数据信息,它可能是一个session token,一次费时计算的结果等等,通常为了避免Activity之间传递数据的开销,会将这些数据通过持久化来存储. ...
- 不要在Application中缓存数据
在你的App中的很多地方都需要使用到数据信息,它可能是一个session token,一次费时计算的结果等等,通常为了避免Activity之间传递数据的开销,会将这些数据通过持久化来存储. 有人建 ...
- AngularJS中实现显示或隐藏动画效果的3种方式
本篇体验在AngularJS中实现在"显示/隐藏"这2种状态切换间添加动画效果. 通过CSS方式实现显示/隐藏动画效果 思路: →npm install angular-anima ...
- ajax相同url和参数,将不会重复发起请求
IE浏览器下使用GET发送请求时,如果两次请求的地址和参数相同,在不刷新页面的情况下,浏览器会缓存第一次请求的内容,服务端更新后浏览器仍然显示第一次的内容. 解决办法: 一. GET请求URL后加随机 ...
- 关于scrapy中如何区分是接着发起请求还是开始保存文件
一.区分 根据yield迭代器生成的对象是request对象还是item对象 二.item 1.配置tem对象 在items.py文件中设置类 class MyscrapyItem(scrapy.It ...
- java中key-value数据有重复KEY如何存储
http://www.iteye.com/problems/87219 Map<Key, List<Value>>, 这个好 师兄厉害,给介绍了个神器:guava
- C#将数据集DataSet中的数据导出到EXCEL文件的几种方法
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.W ...
- ASP.NET服务器控件OnClientClick事件中Eval()作为js方法的参数的一种写法
参考代码: <input type="button" OnClientClick='<%#Eval("DeptID", "DelUserD ...
- 从map中取出最大或最小value对应的key---多种写法
package com.yuwanlong.hashing; import java.util.ArrayList; import java.util.Collections; import java ...
随机推荐
- 使用 JSONModel
Magical Data Modelling Framework for JSON https://github.com/icanzilb/JSONModel New: In version 0.12 ...
- Configuration Manager 和内容位置(包源文件)
Configuration Manager 2007 中的内容位置涉及 Configuration Manager 2007 客户端如何查找播发和软件更新的包源文件.当客户端需要查找内容时,它会将内容 ...
- 【原创】Qt 使用ODBC driver 连接SQL Server
最近在做数据库的课程设计.第一个需要解决的问题是使用什么工具来实现这个系统.经过一番资料查找,决定使用SQL Server Express 2012作为服务器,使用Qt作为编写客户端程序语言.问题是c ...
- Virtual PC局域网共享速度慢的解决半法。转
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DisableTaskOffload 新建字符串,名:DisableTaskOffloa ...
- 【001】JS解析,反解析XML的一些问题
JS解析,反解析 XML 的一些问题 2016-03-25 15:38:28 星期五 文章底部下面有提供把 字符串 变成 XML 对象的方法. 该方法,在 Chrome48 ,FireFox ,IE1 ...
- 在web.xml中配置404错误拦截
<error-page> <error-code>404</error-code> <location>/home.do</location> ...
- uva 12508 - Triangles in the Grid(几何+计数)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011328934/article/details/35244875 题目链接:uva 12508 ...
- 【CodeChef】Prime Distance On Tree
vjudge 给定一棵边长都是\(1\)的树,求有多少条路径长度为质数 树上路径自然是点分治去搞,但是发现要求是长度为质数,总不能对每一个质数都判断一遍吧 自然是不行的,这个东西显然是一个卷积,我们合 ...
- 解决osx下 ssh: connect to host localhost port 22: Connection refused
解决办法: 终端下执行:sudo systmesetup -setremotelogin on
- 详解Tensorflow数据读取有三种方式(next_batch)
转自:https://blog.csdn.net/lujiandong1/article/details/53376802 Tensorflow数据读取有三种方式: Preloaded data: 预 ...