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项 ...
随机推荐
- webpack资料
https://zhuanlan.zhihu.com/p/20367175?columnSlug=FrontendMagazine http://www.cnblogs.com/tugenhua070 ...
- 转:ElasticSearch 简单入门
原文来自于:http://www.oschina.net/translate/elasticsearch-getting-started?cmp 教程样例 我们将要部署一个非常简单的应用--在一个部门 ...
- 转:如何查看linux版本 如何查看LINUX是多少位
原文来自于:http://blog.csdn.net/hongweigg/article/details/7192471 一.如何得知自己正在使用的linux是什么版本呢,下面的几种方法将给你带来答案 ...
- Coupons
uva10288:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&am ...
- 十大免费移动程序测试框架(Android/iOS)
十大免费移动程序测试框架(Android/iOS) 概述:本文将介绍10款免费移动程序测试框架,帮助开发人员简化测试流程,一起来看看吧. Bug是移动开发者最头痛的一大问题.不同于Web应用程序开发, ...
- POJ3295 Tautology(枚举)
题目链接. 分析: 最多有五个变量,所以枚举所有的真假值,从后向前借助于栈验证是否为永真式. #include <iostream> #include <cstring> #i ...
- BZOJ 1020 [SHOI2008]安全的航线flight
1020: [SHOI2008]安全的航线flight Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 847 Solved: 286[Submit][ ...
- delphi 托盘程序 转
Delphi的托盘编程 .现在很多程序都用这个,比如傲游,迅雷等,主要代码如下: uses Windows, Messages, SysUtils, Variants, Classes, Grap ...
- cppunit学习笔记
下载cppunit 链接:http://www.cnblogs.com/duxiuxing/p/4303809.html cppunit官方文档浅析 链接:http://www.cnblogs.com ...
- selenium webdriver python 元素定位
总结 定位查找时,返回查找到的第一个match的元素.如果找不到,则 raise NoSuchElementException 单个元素定位: find_element_by_idfind_e ...