Ajax-Engine

[code]
/**
* @author joshokn
*/
function Engine(){
//存放事件的列表
this.eventList=new Array();

//store Engine中的widget列表
this.widget_L=new Array();

}

//load widget list
Engine.prototype.load=function(widget_list){
widget_L = widget_list;
}


/**
* 回调,处理事件列表
* @param {Object} eventList
* @param {Object} widget_L
*/
Engine.prototype.process = function(){
for(var i = 0 ; i < widget_L.size; i++){
//widget 's method!
widget_L[i].processMess(eventList);
}
}

/**
* 这里就是向后台定时轮询取事件
* @param {Object} widget_L
*/
Engine.prototype.GetEventsInfo = function(){
var xmlHttp;
try {
xmlHttp = new XMLHttpRequest();
} catch(e) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {
xmlHttp = false;
}
}
}

if(xmlHttp){
xmlHttp.open("POST" , "tree?name=engine, false);

xmlHttp.send(null);
if(xmlHttp.readyState == 4){
var response = xmlHttp.responseText;
//数据结构根据具体的业务来定
var text = response.split("&");
var name = text[0];
var widget_name = text[1];
var widget_id = text[2];
var widget_type = text[3];
var tempArray = new Array(widget_name,widget_id, widget_type);
Engine.eventList[count++] = tempArray;

//取到的消息交给process处理
process();
}
}
}


/**
* 启动引擎,定时轮询
*/
Engine.prototype.start = function(){
window.setInterval("GetEventsInfo()",5000);
};

[/code]
这个Engine的位置是放在前台的,它的作用,就是负责收集消息,分发消息.
代码仍有不少累赘,比如eventlist没有必要作为一个属性,它的完全可以是一个临时变量,待改进。
我想说的是有了这个引擎,b/s中的MVC结构就更加清晰了。
前台的widget只需要将自己的改变通知后台(相当于VIEW通知MODEL),其它的事情就不需多问了;Engine也只需要做收发的工作(controler负责接受模型的改变,去通知view).
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值