2011-03-26 8 views
3

Question rapide concernant settimeout, est-ce qu'il s'exécute périodiquement comme setinterval?settimeout = setinterval avec délai?

Dites que j'ai une ligne qui va comme setTimeout("functionx();" , 1000), est fonctionx() exécuté une seule fois (après 1 seconde)? ou faut-il se présenter comme suit:

  1. 1 sec retard
  2. run Yevol()
  3. execute Yevol chaque 1 seconde après cela?

grâce

+3

Votre recherche sur Internet ne pouvait pas vous donner une réponse décente? https://developer.mozilla.org/en/DOM/window.setTimeout | Vous pourriez aussi essayer. –

Répondre

6

setTimeout est un one-off, la fonction que vous donnez est appelée une seule fois.

(Hors-sujet: Notez que vous voulez presque jamais donner soit setTimeout ou setInterval un code contenant la chaîne, au contraire, donner une référence de fonction réelle.)

Donc, ce appellera la fonction foo une fois, après un demi-seconde ou si (ces choses ne sont pas précises):

function foo() { 
    display("Hi there"); 
} 
setTimeout(foo, 500); 

... alors que cela gardera appeler toutes les demi-secondes ou si jusqu'à ce que vous arrêtiez:

var timer = setInterval(foo, 500); 
// Somewhere else, stop it: 
clearInterval(timer); 
1

Avec setTimeout(), la fonction sera exécutée une seule fois , après le délai spécifié.

Cette exécution unique est précisément la différence avec setInterval(), qui appelle la fonction à plusieurs reprises.

0

setTimeout exécutera la fonction donnée après les millisecondes données. setInterval exécutera la fonction donnée toutes les millisecondes. Si vous voulez que setTimeout agisse comme setInterval, vous devrez rendre récursive la fonction que vous avez spécifiée.

+2

[Veuillez ne pas lier à W3Schools] (http://w3fools.com/) comme référence JavaScript, et * en particulier * pas ses pages sur 'setInterval' et' setTimeout' –

Questions connexes