我正在使用一组在一组元素上运行的函数来更新每个元素。
我需要在更新完成后执行序列化功能。
目前序列化运行次数太多(元素数量), 我只希望它运行一次。
我尝试声明一个计时器变量,每次都禁用它,但最后一次:
clearTimeout(timer);
timer = setTimeout(function(){console.log("tester")}, 5000);
return this;
但这似乎不起作用,当功能超时时,它会多次运行。
有关如何解决此问题的任何想法?
谢谢!
答案 0 :(得分:1)
我也认为问题出在其他地方:setTimeout只能通过声明执行一次,所以如果它多次触发,那只能是因为它被声明了很多次。
你能检查一下你是否运行父函数的次数超过了吗?要取消调试,请为每个函数设置console.log()的计数器。返回树中的3/4级别,检查它们是否都不计算两次或更多次。
将事件附加方法从任何内容修改为jQuery on或bind也可以是帮助器。
编辑:严格回答你的问题:
var counter = 0; //should be out of your function scope
setTimeout(function(){
counter +=1;
if (counter == 1){
//yourFunction()
}
},5000)