如何在聊天应用程序的JavaScript中产生时间延迟?

时间:2010-01-12 11:25:14

标签: javascript chat

我目前是JavaScript的初学者,主要是Java代码。 我的问题是关于定期(每1/2秒)调用document.write("string here")以向客户端附加任何新的未打印的聊天消息。我之前尝试使用以下代码:

<html>
<body onload="yantra();">
<script type="text/javascript">
x = 0;

function yantra(){
document.write("Hello<br>");
i = 1;
    for(i = 0; i < 100; i++){
    setTimeout("writeOneNum()", 1000);  
    }

}

function writeOneNum(){
x =x + 1;
document.write(x+"<br>");
}
function blank(){}
</script>

</body>
</html>

而不是像我预期的那样每1000毫秒打印1到100个;实际上,它一次打印1到100(意思是没有任何延迟)。

1 个答案:

答案 0 :(得分:1)

嗯,你正在设置所有的超时,所以当然它会立刻解雇所有超时。您的代码将对循环进行少量修改:

function yantra(){
    document.write("Hello<br>");
    i = 1;
    for(i = 0; i < 100; i++){
        setTimeout("writeOneNum()", 1000 * i);  
    }
}

通过将时间乘以i,第一个会立即触发,第二个会在1000 * 1 = 1000毫秒,第三个会在1000 * 2 = 2000毫秒等。

在您的情况下,考虑setInterval函数可能更明智:

function yantra(){
    document.write("Hello<br>");
    setInterval("writeOneNum()", 1000);
}

这将无限地每秒发射writeOneNum()。要在某个时刻停止间隔,请查看上面同一链接上的clearInterval。