如何添加setTimeOut以避免每个循环中的脚本无响应?,基本上有这个网格,我有很多行,并且行有一个由kendo datepicker组成的列。问题是,在绑定到网格的几个后,我得到了无响应的脚本框,然后我必须单击继续,它会工作:
var j = 0;
$$('.dtInputs'),each(function (input){
j++;
input.kendoDatePicker();
if(j > 500){
if(j % 1000 = 0)
{
window.setTimeOut(arguments.callee, 1);
return false;
}
}
});
问题在于,通过观察这个我不认为它会在返回false之后继续添加datepicker到其余输入。不知道怎么做。
答案 0 :(得分:1)
这里的问题是.each
本身是同步的。
setInterval
在你的情况下,这应该有效
$.fn.asyncEach = function(callback){
var i = 0;
var elements = this;
var timer = setInterval(function(){
callback.call(elements[i],elements[i]);
if(++i >= elements.length) clearInterval(timer);
},0);
}
$('.dtInputs').asyncEach(function(){
$(this).kendoDatePicker();
});
请注意,我正在使用计时器来强制执行异步行为。它将阻止阻止UI,但处理速度会明显变慢。