日期:2014-05-16 浏览次数:20431 次
用js怎么判断连续三秒得不到数据 fuction CountdownDataBind(id,type,data) { $.p("a.aspx",{id:id,data:data},fuction(xml){ var result=xml; if(result!="") { $("#aa").html("dfsdfsf"); } else { $("#aa").html("由于网络不稳定,暂时得不到数据")//3秒到不到数据后输出 } }) } 整个函数每秒都在执行
var fThree=0; fuction CountdownDataBind(id,type,data) { $.p("a.aspx",{id:id,data:data},fuction(xml){ var result=xml; if(result!="") { fThree=0; $("#aa").html("dfsdfsf"); } else { fThree++; if(fThree==3) $("#aa").html("由于网络不稳定,暂时得不到数据")//3秒到不到数据后输出 } }) }
------解决方案--------------------
你这个不应该用每秒执行的方式,因为你不知道流程什么时候完成,而且下一次执行时上一个流程可能还没完成,再一次的请求可能会加剧网络和服务器的负担
用递归比较好,规定次数而不是时间
fuction CountdownDataBind(id,type,data,num)//num为请求的最大次数
{
if(num==0)
{
$("#aa").html("由于网络不稳定,暂时得不到数据")//num次请求都没有结果就结束递归,输出失败
return;
}
num--;
$.p("a.aspx",{id:id,data:data},fuction(xml){
var result=xml;
if(result!="")
{
$("#aa").html("dfsdfsf");
return;//一旦成功即结束递归,避免浪费时间及资源
}
else
{
CountdownDataBind(id,type,data,num-1);
}
})
}
------解决方案--------------------
fuction CountdownDataBind(id,type,data)
{
if(!arguments.callee.n){arguments.callee.n = 0}
$.p("a.aspx",{id:id,data:data},fuction(xml){
arguments.callee.n++
var result=xml;
if(result!="")
{
$("#aa").html("dfsdfsf");
}
else
{
if(arguments.callee.n%3 === 0){
$("#aa").html("由于网络不稳定,暂时得不到数据")//3秒到不到数据后输出
}
}
})
}
------解决方案--------------------
$.ajax还有个timeout的涵数啊,你设置为3000,
$.ajax({
success:function(){},
timeout:function(){alert('3秒时间到');}
});