Uma situação em que você deve evitar setInterval.

Função de exemplo usada para a Abordagem 1 e Abordagem 2 abaixo:

// Outputs "Hi" in the console when called
function sayHi() {
console
.log("Hi");
}

Abordagem 1: Método ruim de fazer isso

Essa abordagem é considerada uma prática ruim, pois a função sayHi () será chamada a cada 5 segundos, independentemente de ter ou não concluído a execução das vezes anteriores em que foi chamada. Isso pode se tornar particularmente problemático quando você está lidando com solicitações AJAX, pois é necessário buscar ou enviar dados pela rede e os tempos de resposta são variáveis ​​e desconhecidos.

// Will call sayHi() function every 5 seconds
setInterval
(sayHi, 5000);

Abordagem 2: método preferido de fazer isso

Esta é a abordagem preferida, pois ela aguardará a função sayHi () terminar de ser executada antes de ser chamada novamente. Neste caso, você está esperando 5 segundos após a execução, não executando a cada 5 segundos.

// Self-executing function that uses setTimeout instead of setInterval
! function betterApproach() {
setTimeout
(sayHi, 5000);
}();

// The self-executing function wrapper can also be written like this:
(function betterApproach() {
setTimeout
(sayHi, 5000);
})();