注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

星期五

明天不上班

 
 
 

日志

 
 
关于我

一个特立独行的Java程序员,比较宅,上上网,写博客,听音乐,看电影。

网易考拉推荐

关于JS延迟执行  

2013-05-13 20:04:21|  分类: Javascript |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
当我们页面需要运行大量Dom操作时,为了防止页面crash掉, 我们就需要延迟执行JS,我们可以使用setTimeout方法,推迟方法的执行。

使用延迟加载所必需的条件
1.有大量操作。
2.操作可以分解成很多相似的小的操作。

如何执行
1.将操作分解
2.将分解后的操作push到一个全局数组
3.在达成某种调节后触发相对应的操作(这里用时间触发)

var TEST = {};

TEST.DeferredMgr = {
eventList: [],

add: function(obj, func, args){
this.eventList.push({obj:obj, fun:func, args:args});
return this.eventList.length;
},

remove: function(index) {
this.eventList.splice(index,1);
},

clear: function() {
this.eventList = [];
},

run: function(index) {
var o = this.eventList[index];
var obj = o.obj;
var fun = o.fun;
var args = o.args;
fun.apply(obj, args);
},

deferredRun: function(interval) {
var interval = interval || 500;
for(var i=0; i<this.eventList.length; i++){
setTimeout("TEST.DeferredMgr.run(" + i + ")", i*interval);
}
}

};


//Usage

function createChart(id) { ... ...}


for(var i=0; i<100; i++) {
TEST.DeferredMgr.add(window, createChart, ["container" + i]);
}

TEST.DeferredMgr.deferredRun(500);

传送门
例子:http://get-set.cn/wordpress/demo/sleep/index.htm
  评论这张
 
阅读(423)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017