Find()的Javascript代码优化
我有一个c#代码,它在SQL中运行查询并返回大约2000行。然后创建一个Treeview控件并将其添加到my主页面。这几乎是立即完成的,这很好Find()的Javascript代码优化,javascript,c#,jquery,Javascript,C#,Jquery,我有一个c#代码,它在SQL中运行查询并返回大约2000行。然后创建一个Treeview控件并将其添加到my主页面。这几乎是立即完成的,这很好 var orgId = $('select[name="ctl00$PageContent$FunctionsDropDownList"] option:selected').val(); if (!orgId) { return false; } //calls serversid
var orgId = $('select[name="ctl00$PageContent$FunctionsDropDownList"] option:selected').val();
if (!orgId) {
return false;
}
//calls serverside get data
//This line happens quickly
$('#ctl00_PageContent_HiddenRulesDialogTriggerButton').click();
//This part takes about 10-15 minutes to finally get to the true
var i = setInterval(function () {
if ($('#ctl00_PageContent_treeview').find('table').length > 0)
{
clearInterval(i);
StartDialog();
return false;
}
});
因此,点击clearInterval(i)
大约需要10-15分钟。当它这样做时,i=978
。不知道为什么要花这么长时间。可能是find()
非常慢。有人推荐替代方案吗
编辑
尝试使用.one()
,域节点插入
事件,将事件委托给文档
功能启动对话框(el){
控制台日志(el)
}
$(文件)
.1(“域节点插入”
,“#ctl00_页面内容_树视图表”
,功能(e){
StartDialog(本)
});
$(“#ctl00_PageContent_treeview”)。附加(“”
问题可能在于调用setInterval时没有第二个参数(时间间隔) 让我们看看您的代码似乎在做什么
var k = 1;
var i = setInterval(function () {
if (k < 100)
{
k += 1;
} else {
clearInterval(i);
window.alert('Finished!');
}
//No second argument
});
回调是更好的做法,但提供时间间隔可能也会起作用。轮询不是正确的方法。大概当您调用服务器获取数据时,您使用的是
$.ajax()
。数据到达时将调用您的回调。这个回调可能已经在您的代码中,并且正在用于填充Treeview控件。您只需在填充TreeView后添加其他代码即可显示对话框。如何创建TreeView?当“treeview创建操作”完成时,你不能将这个“StartDialog”附加为回调吗?我没有编写Javascript代码,但我一直在尝试修复它。树视图是在代码隐藏中创建的。然后StartDialog()创建弹出窗口并添加treeview html。但是StartDialog()不是问题所在。在find()中出现了瓶颈,我甚至在5000毫秒的时间内尝试了它,但总的问题是IE。我运行了那段代码,时间间隔设置为5000,而且花了很长时间。当我在Firefox中运行它时,大约需要2-3秒来显示。
var k = 1;
var i = setInterval(function () {
if (k < 100)
{
k += 1;
} else {
clearInterval(i);
window.alert('Finished!');
}
//No second argument
});
var i = setInterval(function () {
if ($('#ctl00_PageContent_treeview').find('table').length > 0)
{
clearInterval(i);
StartDialog();
return false;
}
//Once per second
},1000);