Javascript 为增量页面加载设置超时
请参阅下面的代码:Javascript 为增量页面加载设置超时,javascript,jquery,ajax,Javascript,Jquery,Ajax,请参阅下面的代码: function GetSQLTable() { var str = $("#<%=fieldGroupReferences.ClientID%>")[0].value var res = str.split(","); $("#LoadingImage").show(); $("#LoadingImage2").show(); for (var i = 0; i < res.
function GetSQLTable() {
var str = $("#<%=fieldGroupReferences.ClientID%>")[0].value
var res = str.split(",");
$("#LoadingImage").show();
$("#LoadingImage2").show();
for (var i = 0; i < res.length; i++) {
alert(res[i])
(function(i,res) {
setTimeout(function (i,res) {
alert(res[i])
GetSQLTable2(i, res.length,res)
}, 0)
})(i,res)
}
}
函数GetSQLTable(){
var str=$(“#”)[0]。值
var res=str.split(“,”);
$(“#加载图像”).show();
$(“#加载图像2”).show();
对于(变量i=0;ifieldGroupReferences最多可以包含50个值。此jsbin链接应该可以回答您的问题 当你打电话的时候
setTimeout(function(res,i){
//using res and i here
},0)
不使用res,i作为函数参数,根据闭包逻辑res和i默认在函数内部可用。如果您使用res,那么您正在创建一个具有新参数的函数,这些参数的值不会被发送到。
所以应该是这样
setTimeout(function(){
//using res and i here
},0)
我相信当你调用setTimeout(function(){},0)时,setTimeout的格式是这样的
function setTimeout(callback,time){
after-time{
callback(); //observe here we are not passing anything as arguements, i am not sure but setTimeout may pass its own values like how $.on passes 'events' to callbacks
}
}
要回答第二部分设置0秒的帮助,
通过设置0秒,用外行的话来说,您正在以异步方式继续流!!!因此,无论接收到多少ajax响应,它们都不会相互阻塞,因为代码是在$(“#”)中异步求解的[0]id永远不是数组,因此不需要[0],即$(“#”)就可以了!!!没有,;在setTimeout、alert、GETSQLTable和匿名函数调用之后,我不同意“当有大量AJAX请求时网页崩溃”,请参阅我的AJAX tester@Wishy JQuery将返回一个id数组,因此需要[0]访问其中一个元素的值。也
代码>在javascript中不是必需的,但它们确实会提高可读性,特别是在有匿名函数的情况下。啊,对了。这是没有意义的,因为ID总是用于一个元素。关于是的,我知道,但强制执行总是好的。