六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 32|回复: 0

EXT Tabpanel多标签实时监控中ajax请求的关闭控制解决办法

[复制链接]

升级  26%

3

主题

3

主题

3

主题

童生

Rank: 1

积分
13
 楼主| 发表于 2013-1-29 11:38:25 | 显示全部楼层 |阅读模式
问题背景:利用Tabpanel来完成项目中实时监控任务的展现,ajax定时(隔10秒或5秒)后台请求
          数据。因此脚本要管理到每一个tabpanel与ajax请求的新增与关闭。
处理思路:用时间戳区分每一个产生的tab,每新增一个tab,则产生一个新的ajax请求对象,将
          新产生的tab与ajax都保存进入一个简单的数组或类哈希表的结构中。监听tab的关闭
          动作,消除对应的ajax请求对象和tab对象。
关键代码:
//存储实时监控任务数据请求的对象var relTimeTaskHashMap = {Set : function(key, value) {this[key] = value},Get : function(key) {return this[key]},Contains : function(key) {return this.Get(key) == null ? false : true},Remove : function(key) {delete this[key]}};//存储tab对象var chartHashMap = {Set : function(key, value) {this[key] = value},Get : function(key) {return this[key]},Contains : function(key) {return this.Get(key) == null ? false : true},Remove : function(key) {delete this[key]}};//ajax请求的守护对象,负责ajax请求发起和停止function RealTimeTaskDefend(){var threadStatus;var callBackFunction;this.setCallBackFunction=function(callFunction){this.callBackFunction=callFunction;}this.run=function(){this.threadStatus=setInterval(this.callBackFunction,5000);}this.stop=function(){clearTimeout(this.threadStatus);}}//新增加一个tab需要完成的动作      var realTimeTaskDefend = new RealTimeTaskDefend();relTimeTaskHashMap.Set(tabPanelId, realTimeTaskDefend);chartHashMap.Set(tabPanelId,'实时监控的展现对象入口');//发起监控请求需要完成的动作var realTimeTaskDefend_run = relTimeTaskHashMap.Get(tabpanelId)    realTimeTaskDefend_run.setCallBackFunction('实时监控的数据处理方法入口');    realTimeTaskDefend_run.run();//结束监控请求需要完成的动作var realTimeTaskDefend_stop  = relTimeTaskHashMap.Get(tabPanelId);    realTimeTaskDefend_stop .stop();    relTimeTaskHashMap.Remove(tabPanelId);    chartHashMap.Remove(tabPanelId);
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

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