J'ai cette fonction qui se met à jour toutes les 5000ms. Cependant, lorsque je charge la page, elle attend 5000 ms puis appelle la fonction pour la première fois, puis attend 5000 ms pour la mettre à jour encore et encore.

Je veux faire en sorte que, lors du chargement de la page, il appelle instantanément la fonction la première fois, puis attend 5000 ms pour l'appeler encore et encore. Comment puis-je faire ceci?

setInterval(function() {
    document.getElementById("test").innerHTML = "js works";
}, 5000);
<div id="test"></div>
3
Kiwa 17 mars 2019 à 06:22

2 réponses

Meilleure réponse

Utilisez la syntaxe !function IIFE avec setTimeout :

!function refresh () {
  document.getElementById("test").innerHTML = Date.now()
  setTimeout(refresh, 5000)
}()
<div id="test"></div>
1
Afanasii Kurakin 17 mars 2019 à 04:00

Vous pouvez utiliser setTimeout avec un IIFE.

(function loop() {
  document.getElementById("test").innerHTML = "js works";
  console.log(new Date().getTime());
  setTimeout(loop, 5000); // Run the loop function for every 5000 ms.
}()); // Run the loop function at first time.

Quelque chose comme ça:

(function() {

  (function loop() {
    document.getElementById("test").innerHTML = "js works";
    console.log(new Date().getTime());
    setTimeout(loop, 5000);
  }());

}());
<div id="test"></div>
1
Danny Fardy Jhonston Bermúdez 17 mars 2019 à 03:37