六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 284|回复: 0

Ajax-Engine

[复制链接]

升级  92%

12

主题

12

主题

12

主题

童生

Rank: 1

积分
46
 楼主| 发表于 2013-1-29 13:17:36 | 显示全部楼层 |阅读模式
/** * @author joshokn */function Engine(){//存放事件的列表this.eventList=new Array();//store Engine中的widget列表this.widget_L=new Array();}//load widget listEngine.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);};
这个Engine的位置是放在前台的,它的作用,就是负责收集消息,分发消息.
代码仍有不少累赘,比如eventlist没有必要作为一个属性,它的完全可以是一个临时变量,待改进。
我想说的是有了这个引擎,b/s中的MVC结构就更加清晰了。
前台的widget只需要将自己的改变通知后台(相当于VIEW通知MODEL),其它的事情就不需多问了;Engine也只需要做收发的工作(controler负责接受模型的改变,去通知view).
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表