简体   繁体   中英

How to produce a time delay in JavaScript for a chat App?

I'm currently a beginner at JavaScript and predominantly code in Java. My Question is is regarding invoking the document.write("string here") periodically (every 1/2 seconds) to append any new unprinted chat message to the client. I earlier tried using the following code :

<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>

Instead of it printing 1 to 100 every 1000 millisecond as I expected it to print; in actuality, it printed 1 to 100 at one go (meaning without any delay).

Well, you are setting all the timeouts at once, so of course it fires them all at once. Your code will work with small modification to the loop:

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

By multiplying the time with i , the first is fired instantly, the second at 1000 * 1 = 1000 ms, the third at 1000 * 2 = 2000 ms etc.

In your case, it could be wiser to consider the setInterval function:

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

That will fire the writeOneNum() every second infinitely. To stop the interval at some point, take a look at clearInterval on that same link above.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM