AjaxManager的实现
在NeralJS思路整理一章中我们提到过实用ajax管理模块控制ajax请求,以减少ajax请求数量,优化加载,以下是ajax模块的实现,我已经确保经历简单。
/**
* Created by william on 2014/12/26.
*/
define(function () {
var events = require("EventBus"); function AjaxManager(serverURL) {
if (!serverURL || serverURL == "" || serverURL.length == 0)
throw "web服务地址未定义";
this.serverURL = serverURL;
this.request_list = [];
this.data_list = [];
} /**
* 添加请求到待发区
* @param requestInfo 数据格式{uid: 'kb123',dataRange: { start: '2014/11/8', end: '2014/-1/-1' }}
*/
AjaxManager.prototype.addRequest = function (requestInfo) {
this.request_list.push(requestInfo);
};
/**
* 发出保存在请求列表中的请求,请求完成时触发request_ready事件,注意data数据是一组key:value对
* @constructor
*/
AjaxManager.prototype.DoRequest = function () {
var self = this;
$.post(this.serverURL, this.request_list, function (data) {
for (var k in data) {
self.data_list[k] = data[k];
}
events.trigger(self, "request_ready", self.data_list);
});
this.request_list = [];//请求完成,清空请求队列
};
/**
* 订阅Ajax完成事件,该事件在ajax返回时被触发
* @param callback
* @constructor
*/
AjaxManager.prototype.OnReady = function(callback){
events.addListener(this,"request_ready",callback);
};
});
上面这个模块无法实现数据的定向推送,说以将整个this.data_list都开发给了每一个订阅者。这也是收到EventBus模块功能的局限性影响,不过对于网页来说,所有返回的数据本来就是要显示出来的,所以不存在安全性问题。暂时足够使用
AjaxManager的实现的更多相关文章
- NeralJS需求整理及思路
NeralJs希望通过解析json数据,动态创建和渲染报表,每个报表呈现一定时间范围的数据,通过使用表格图表等不同的方式,使数据的呈现不死板,且更容易看出规律. 说通俗点,就是动态在一个区域内生成多张 ...
- 推荐60个jQuery插件(转)
jQuery插件jQuery Spin Button自定义文本框数值自增或自减 jQuery插件JQuery Pager分页器实现javascript分页功能 jQuery插件FontSizer实现J ...
- Android+Jquery Mobile学习系列(6)-个人信息设置
本节开始,进行代码的实战练习.我的这个App是管理保险客户信息的,数据采用Sqlite存储在本地手机上,第一次使用需要先登记自己的个人信息,这个功能非常简单,也无关紧要,我是拿这个练手,方便做后面复杂 ...
- Android+Jquery Mobile学习系列(3)-创建Android项目
前两章分别对开发环境和Jquery Mobile基础知识进行了介绍,本章介绍创建一个Android项目,并使用WebView控件显示HTML数据. 首先创建一个Android Application项 ...
随机推荐
- localStorage 的基本使用
① localstorage大小限制在500万字符左右,各个浏览器不一致② localstorage在隐私模式下不可读取③ localstorage本质是在读写文件,数据多的话会比较卡(firefox ...
- thinkphp整合系列之支付宝RSA加密方式
thinkphp整合系列之支付宝RSA加密方式上篇博客写的是MD5加密方式:thinkphp整合系列之支付宝MD5加密方式扫码支付http://baijunyao.com/article/75 但是呢 ...
- windows8.1 下搭建配置apache+php+mysql
软件版本: apache:Apache 2.4.10 Win64 http://www.apachelounge.com/download/VC11/binaries/httpd-2.4.10- ...
- 随机数(random)
在测试你的程序是否超时时,可以随机生成一组大数据,进行一下测试. 当然如果你考场上一道题直接读不懂不会做的时候,可以random一下,拼一下RP嘛.2333. #include<cstdio&g ...
- 在同个工程中使用 Swift 和 Objective-C(Swift 2.0更新)-b
本节包含内容: Mix and Match 概述(Mix and Match Overview) 在同个应用的 target 中导入(Importing Code from Within the Sa ...
- 关于手机"内存"的解答
关于手机"内存"的解答 内存小/少 手机内存在手机出厂的时候就已经固定了,其总量无法调整,不能像电脑一样加内存条.所以想提升可用内存,除了经常清理系统,或者把不是必须的应用移到SD ...
- 使用Windows 系统性能监控来报警磁盘空间不足
http://blog.csdn.net/jiangxinyu/article/details/4370288
- Linux2.6内核--内存管理(1)--分页机制
在内核里分配内存可不像在其他地方分配内存那么容易.造成这种局面的因素很多.从根本上讲,是因为内核本身不能像用户空间那样奢侈的使用内存.内核与用户空间不同,它不具备这种能力,它不支持简单便捷 ...
- 修改一行和修改全表的TX锁
SQL> select * from v$mystat where rownum<2; SID STATISTIC# VALUE ---------- ---------- ------- ...
- 【转】HashSet的用法
原文网址:http://blog.csdn.net/aidesudi/article/details/4720201 Java代码 public class TestHashSet { public ...