Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

window.setTimeout

Résumé

Exécute un morceau de code ou une fonction après un délai determiné.

Syntaxe

timeoutID = window.setTimeout(fnct, delai[, param1, param2, ...]);
timeoutID = window.setTimeout(code, delai);

  • timeoutID est l'identificateur numerique du timeout, qui peut être utilisé avec window.clearTimeout.
  • fnct est la fonction que vous désirez exécuter après delai millisecondes.
  • code est, dans la syntaxe alternative, une chaîne contenant le code à exécuter après delai millisecondes. (L'utilisation de cette syntaxe n'est pas recommandée pour les mêmes raisons que l'utilisation d'eval()).
  • delai est le nombre de millisecondes (millièmes de seconde) après lequel la fonction doit être appelée. Le délai réel peut s'avérer plus long (cf. doc en anglais).

Notez que le passage de paramètres supplémentaires à la fonction dans la première syntaxe ne fonctionne pas dans Internet Explorer < 9.

Exemples

 

L'exemple suivant met en place deux boutons sur une page web et associe chacun d'entre eux aux routines setTimeout et clearTimeout. Appuyer sur le premier bouton définit un timeout (délai d'execution) qui appelle une boite de dialogue après deux secondes et enregistre l'id du timeout afin que celui-ci puisse être invoqué par le clearTimeout (annulation du délai d'execution). Il vous est donc possible d'annuler ce délai en appuyant sur le second bouton.

HTML

<p>Live Example</p>
<button onclick="delayedAlert();">Show an alert box after two seconds</button>
<p></p>
<button onclick="clearAlert();">Cancel alert before it happens</button>

 

JavaScript

var timeoutID;

function delayedAlert() {
  timeoutID = window.setTimeout(slowAlert, 2000);
}

function slowAlert() {
  alert("That was really slow!");
}

function clearAlert() {
  window.clearTimeout(timeoutID);
}

Autres exemples

function generateOutput(aConcise) {
  if(aConcise)
    parent.generateConciseOutput();
  else
    parent.generateOutput();
}
window.setTimeout(generateOutput, 1000, true);
// Compatibilité accrue grâce aux fonctions anonymes
window.setTimeout(function() {
  generateOutput(true);
}, 1000);
window.setTimeout('window.parent.generateOutput()', 1000);

Consultez également l'exemple de clearTimeout().

 

Notes

Il est possible d'annuler le déclenchement de la fonction à l'aide de window.clearTimeout().

Si vous désirez que la fonction soit appelée de manière répétée (c'est-à-dire toutes les N millisecondes), utilisez plutôt window.setInterval().

Le problème de « this »

Lorsqu'une méthode est passée à setTimeout() (ou n'importe quelle fonction, d'ailleurs), elle sera invoquée avec une mauvaise valeur pour this. Ce problème est expliqué en détails dans la référence JavaScript.

Spécification

DOM Level 0. Ne fait partie d'aucune spécification.

Étiquettes et contributeurs liés au document

Étiquettes : 
 Contributeurs à cette page : jmh, fscholz, teoli, jsx, Automatik, zanz, Tiller, Ceth, BenoitL, Mgjbot
 Dernière mise à jour par : jmh,