跳到主要内容
CNode

当有非常多的setTimeout和setInterval时,哪种用法效率高?

社区
Wwimlwiml发布于 15 年前最后回复 14 年前
12132300

这个非常多是指大约有10W个setTimeout或setInterval存在
一种用法是直接写匿名函数:

mkTimer : function(id){  
    setInterval(  
        function(){  
            console.log(id);  
            //code ...  
        },  
        5 * 1000  
    );  
}

或者这样:

mkTimer : function(id){  
    setInterval(this.test, 5 * 1000, id);  
},  

test : function(id){  
    console.log(id);  
}  

这二种有本质的区别吗?第二种方案会不会效率要高些,内存占用要少些?

查看回复

回复 (12)

Z
zero7u#1114 年前

如果很多就有可能是设计的问题了,建议楼主参考下jQuery或者一些游戏框架的写法,如何用一个主循环优化。

F
fengmk2#1015 年前
引用 wimlwiml难道这个问题很小白吗? :(

选个标签分类一下也不错

F
fredtaylor#915 年前

不错啊,学习了

W
wimlwiml#815 年前

说老实话,我个人也比较同意#3楼说法,感觉第二种省内存和效率高

Z
zhangyiw#615 年前

匿名函数是一次性函数。当只要用一次某个函数式时,就特别有用 通过使用匿名函数,没有必要把函数一直放在内存中,所以使用匿名函数更加有效率

J
JacksonTian#515 年前

第二种必然省内存。

W
wimlwiml#415 年前
引用 wimlwiml难道这个问题很小白吗? :(

好了,谢谢提示:)

M
muyuan#315 年前
引用 wimlwiml难道这个问题很小白吗? :(

发布话题时注意markdown语法的使用,这样代码更容易看清。

W
wimlwiml#215 年前

难道这个问题很小白吗? :(

W
wimlwiml#115 年前

大家不要管代码里面的5秒这个参数,这个纯是随便写的一个数,也可能50秒钟,也可能500秒

参与回复

登录后即可参与回复。登录