Javascript 如何设置setTimeOut以避免脚本在每个循环内无响应
如何添加setTimeOut以避免每个循环中的脚本无响应?基本上,在这个网格中,我有许多行,这些行有一个由剑道日期选择器组成的列。问题是,在绑定到网格几秒钟后,我得到了无响应脚本框,然后我必须单击“继续”,它将工作:Javascript 如何设置setTimeOut以避免脚本在每个循环内无响应,javascript,jquery,kendo-ui,kendo-datepicker,Javascript,Jquery,Kendo Ui,Kendo Datepicker,如何添加setTimeOut以避免每个循环中的脚本无响应?基本上,在这个网格中,我有许多行,这些行有一个由剑道日期选择器组成的列。问题是,在绑定到网格几秒钟后,我得到了无响应脚本框,然后我必须单击“继续”,它将工作: var j = 0; $$('.dtInputs'),each(function (input){ j++; input.kendoDatePicker(); if(j > 500){ if(j % 1000 = 0)
var j = 0;
$$('.dtInputs'),each(function (input){
j++;
input.kendoDatePicker();
if(j > 500){
if(j % 1000 = 0)
{
window.setTimeOut(arguments.callee, 1);
return false;
}
}
});
问题是,通过查看这个,我不认为它将继续添加datepicker,因为它在剩余输入中返回false。不知道怎么做。这里的问题是
。每个本身都是同步的
- 您可以将脚本卸载到
- 或者使用
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();
});
请注意,我使用计时器强制执行异步行为。它可以防止阻塞用户界面,但处理速度会明显变慢。很抱歉,我对Jquery有点陌生,如果我的场景是这样的话,我将如何应用上面提到的内容呢?我非常感谢。@ergwin更新了答案。window.setTimeOut
未定义。也许你的意思是window.setTimeout
?(注意外壳)如果你使用的是剑道格网,你应该考虑使用它的编辑和虚拟滚动能力——一次创建很多小部件通常不会带来良好的用户体验(而用户通常只与一些小部件交互,我想)