2011-01-19 2 views
124

Je veux widget.Rotator.rotate() à un délai de 5 secondes entre les appels ... comment puis-je le faire en jQuery ... il semble que ce delay() jQuery ne fonctionnerait pas pour cela ...Comment différer un appel de fonction pendant 5 secondes?

+3

Est-ce que vous voulez qu'il soit automatiquement appelé avec un retard de 5 secondes entre les invocations, ou cela sera appelé en réponse à une action de l'utilisateur et vous voulez vous assurer qu'il attend au moins 5 secondes après la dernière invocation avant de repartir? Dans ce dernier cas, l'utilisateur devrait-il être en mesure de faire la queue pour des événements ou l'entrée devrait-elle être ignorée si 5 secondes ne se sont pas écoulées? – Phrogz

Répondre

269

Vous pouvez utiliser javascript clair, cela appellera your_func une fois, au bout de 5 secondes:

setTimeout(function() { your_func(); }, 5000); 

Si votre fonction n'a pas de paramètres et pas de récepteur explicite que vous pouvez appeler directement setTimeout(func, 5000)

Il y a aussi un plugin que je l'ai utilisé une fois. Il a oneTime et everyTime méthodes.

+24

S'il n'y a pas de paramètres de fonction, il n'y a pas besoin d'envelopper dans une 'fonction' - cela se passera bien:' setTimeout (votre_fonc, 5000); ' – Oded

+1

@Oded Etes-vous sûr que' Rotator.rotate() 'ne besoin que le récepteur soit réglé sur 'Rotator'? Si vous exécutez ce que vous suggérez, ceci sera la fenêtre. – Phrogz

+1

@Phrogz - Je parlais de la mécanique de 'setTimout'. – Oded

18
var rotator = function(){ 
    widget.Rotator.rotate(); 
    setTimeout(rotator,5000); 
}; 
rotator(); 

Ou:

setInterval(
    function(){ widget.Rotator.rotate() }, 
    5000 
); 

Ou:

setInterval(
    widget.Rotator.rotate.bind(widget.Rotator), 
    5000 
); 
Questions connexes