setTimeout or setInterval?

前端 未结 19 3156
佛祖请我去吃肉
佛祖请我去吃肉 2020-11-21 04:59

As far as I can tell, these two pieces of javascript behave the same way:

Option A:

function myTimeoutFunction()
{
    doStuff();
           


        
19条回答
  •  礼貌的吻别
    2020-11-21 05:27

    I've made simple test of setInterval(func, milisec), because I was curious what happens when function time consumption is greater than interval duration.

    setInterval will generally schedule next iteration just after the start of the previous iteration, unless the function is still ongoing. If so, setInterval will wait, till the function ends. As soon as it happens, the function is immediately fired again - there is no waiting for next iteration according to schedule (as it would be under conditions without time exceeded function). There is also no situation with parallel iterations running.

    I've tested this on Chrome v23. I hope it is deterministic implementation across all modern browsers.

    window.setInterval(function(start) {
        console.log('fired: ' + (new Date().getTime() - start));
        wait();
      }, 1000, new Date().getTime());
    

    Console output:

    fired: 1000    + ~2500 ajax call -.
    fired: 3522    <------------------'
    fired: 6032
    fired: 8540
    fired: 11048
    

    The wait function is just a thread blocking helper - synchronous ajax call which takes exactly 2500 milliseconds of processing at the server side:

    function wait() {
        $.ajax({
            url: "...",
            async: false
        });
    }
    

提交回复
热议问题