$(document).ready(function(){
getContent();
function getContent()
{
var timestamp = ((new Date()).getTime()+"").substring(0,10);
$.getJSON("view1.php",{timestamp:timestamp},
function(json){
var content=json.user+" "+json.con+" "+json.time;
$("#dv").prepend(content+"<br>");
[color=red]getContent();[/color]
});
}
});
坦白说,这是一个服务器推聊天室代码部分,红色部分的作用是一直让他保持长轮询状态,
理论上应该没问题,但是实际效果是太快了,一个时间点上,有n条长轮询。
所以我要延时一下,延时1秒后再调用getContent函数,我想不可能是setInterval,那是定时,不是延时
[img]http://develop.web-103.com/images/1325727850.jpg[/img]
他是想让他显示的慢吧
直接
for(var i=0;i<1000;i++)
for(var j=0;k<1000;j++)
;
什么都不做,放在你想要慢的位置,虽然有那么点影响性能,不过还是比较方便的
在处理一次完成后timeout可以不?
你只需要确保在每次任务执行完毕后 再设置延时任务啊.
不用clear..
又或者你的情况我没太明白.
递归调用setTimeout(一般的js动画效果都是这么做的):
[code="java"]
function doCycle(){
if(判断执行结束条件){
return;
}
getContent();
setTimeout(function(){
doCycle();
});
}
[/code]
[code="java"]
window.setTimeout(function(){ //延迟加载
play();
},1);
[/code]
后面的1就是设置时间的。。。你可以调整试试
把红色的getContent();改成
setTimeout("getContent()", 1000);
就是延时1秒钟了。。绝对没问题
可以使用setInterval 指定延时时间,次数表明执行次数
回想了下,感觉楼主想要的其实是观察着模式。。。
所谓js延时,其实就是回调来实现。
function getCount(){
ajax请求的成功里面回调函数里面写入
setTimeout('getCount()', 1000);
}
这样不就是拿到数据之后一秒钟再向服务器发送一个请求,等这个请求再次成功回来之后再发请求,当然 失败的情况也要做相应处理,要不然一次异常就导致没有效果了。
代码有误,是getCount这个函数里面发送ajax请求。