Will setInterval cause browsers to hang?

The reason setInterval is bad is because it will try to execute the code every X MS regardless of what’s going on in the thread. So if you have:

setInterval( complexFunction, 1 ); // complexFunction takes >1 MS to complete

…you may end up with setInterval trying to re-execute several times before even its own code is complete! However, you can use setTimeout similarly and avoid this problem:

setTimeout( complexFunction, 1 );

function complexFunction() {
  // complex code
  setTimeout( complexFunction, 1 );
}

…now complexFunction will only call itself again once its own code is complete, so if its own code takes longer than 1 MS to complete you won’t have any backlog to deal with like you would with setInterval

Leave a Comment