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

无涯自成一方 2012-02-27 10:02:43

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

})
}

整个函数每秒都在执行

...全文
326 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
无涯自成一方 2012-02-27
  • 打赏
  • 举报
回复
他是一个倒计时,每秒都要执行
未知数 2012-02-27
  • 打赏
  • 举报
回复
你这个不应该用每秒执行的方式,因为你不知道流程什么时候完成,而且下一次执行时上一个流程可能还没完成,再一次的请求可能会加剧网络和服务器的负担
用递归比较好,规定次数而不是时间

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);
}

})
}

无涯自成一方 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sencha_android 的回复:]
设置一个标志位fThree,在回调函数中修改,当得到数据时将fThree置0,取不到数据时fThree加1并判断fThree是不是为3,是则说明连续三秒没有取到数据。

JScript code


var fThree=0;
fuction CountdownDataBind(id,type,data)
{
$.p("a.aspx",{id:id,data:data},f……
[/Quote]

呵呵,谢谢!我说的是连续3秒钟得不到数据,才输出的,这样做应该是不行的
最后一个菜鸟 2012-02-27
  • 打赏
  • 举报
回复
设置一个标志位fThree,在回调函数中修改,当得到数据时将fThree置0,取不到数据时fThree加1并判断fThree是不是为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秒到不到数据后输出
}

})
}
无涯自成一方 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cm80018 的回复:]
setInterval(CountdownDataBind(id,type,data),3000):

[/Quote]
能不能说具体的,谢谢!
无涯自成一方 2012-02-27
  • 打赏
  • 举报
回复
那不行吧,有时延迟只有1或2秒钟,在这种情况不需要 $("#aa").html("由于网络不稳定,暂时得不到数据")//3秒到不到数据后输出
cm80018 2012-02-27
  • 打赏
  • 举报
回复
setInterval(CountdownDataBind(id,type,data),3000):
CoffeePhoton 2012-02-27
  • 打赏
  • 举报
回复
额,不是,应该是发送请求的时候setTimeout,每秒发送一次请求,外面一个全局变量存储发送次数,累积大于3就不发送了
CoffeePhoton 2012-02-27
  • 打赏
  • 举报
回复
试试这样:

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);
}
Acesidonu 2012-02-27
  • 打赏
  • 举报
回复
回调里面办不到吧
小昭 2012-02-27
  • 打赏
  • 举报
回复
$.ajax还有个timeout的涵数啊,你设置为3000,
$.ajax({
success:function(){},
timeout:function(){alert('3秒时间到');}
});
cn00439808 2012-02-27
  • 打赏
  • 举报
回复
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秒到不到数据后输出
}
}

})
}

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧