javascript延时有人会吗

$(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]

10个回答

他是想让他显示的慢吧
直接
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请求。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!