日期:2014-05-16  浏览次数:20391 次

用js怎么判断连续三秒得不到数据
JScript code

用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秒到不到数据后输出
      }

   })
}

 整个函数每秒都在执行




------解决方案--------------------
回调里面办不到吧
------解决方案--------------------
试试这样:

fuction CountdownDataBind(id,type,data)
{
$.p("a.aspx",{id:id,data:data},callback)
}

callback = fuction(xml){
var result=xml;
if(result!="") 
{
$("#aa").html("dfsdfsf");
}
else
{

$("#aa").html("由于网络不稳定,暂时得不到数据")//3秒到不到数据后输出
}
setTimeout(callback,1000);
}
------解决方案--------------------
额,不是,应该是发送请求的时候setTimeout,每秒发送一次请求,外面一个全局变量存储发送次数,累积大于3就不发送了
------解决方案--------------------
setInterval(CountdownDataBind(id,type,data),3000):
------解决方案--------------------
设置一个标志位fThree,在回调函数中修改,当得到数据时将fThree置0,取不到数据时fThree加1并判断fThree是不是为3,是则说明连续三秒没有取到数据。
JScript code

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秒时间到');}
});