2011-01-19 12 views
124

Voglio widget.Rotator.rotate() sarà ritardato di 5 secondi tra le chiamate ... come faccio a farlo in jQuery ... sembra come jQuery di delay() non avrebbe funzionato per questo ...Come posso ritardare una chiamata di funzione per 5 secondi?

+3

vuoi che automaticamente essere chiamato con un ritardo di 5 secondi tra invocazioni, o sarà chiamato in risposta a un'azione dell'utente e vuoi assicurarti che sia in attesa almeno 5 secondi dopo l'ultima chiamata prima di tornare di nuovo? Se quest'ultimo, l'utente dovrebbe essere in grado di accodare gli eventi, o l'input dovrebbe essere ignorato se non sono trascorsi 5 secondi? – Phrogz

risposta

269

È possibile utilizzare JavaScript pianura, questo chiamerà your_func una volta, dopo 5 secondi:

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

Se la funzione non ha parametri e nessun ricevitore esplicito è possibile chiamare direttamente setTimeout(func, 5000)

C'è anche un plugin che ho usato una volta. Ha metodi oneTime e everyTime.

+24

Se non ci sono parametri di funzione, non c'è bisogno di racchiudere una 'funzione' - questo andrà bene:' setTimeout (your_func, 5000); ' – Oded

+1

@Oded Sei sicuro che' Rotator.rotate() 'non hai bisogno che il ricevitore sia impostato su 'Rotator'? Se comporti ciò che suggerisci, questa sarà la finestra. – Phrogz

+1

@Phrogz - Stavo parlando della meccanica di 'setTimout'. – Oded

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

Oppure:

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

Oppure:

setInterval(
    widget.Rotator.rotate.bind(widget.Rotator), 
    5000 
); 
Problemi correlati