2016-07-08 17 views
-1

Warum dieser Code die Warnmeldung nach 5 SekundenSetTimeout mit vordefinierten Funktionen

setTimeout(function() { 
     alert('Displayed after 5 seconds!'); 
    }, 5000); 

und das nicht angezeigt werden?

function print() { 
    alert('Displayed after 5 seconds!'); 
}; 
setTimeout(print(), 5000); 

Was fehlt mir? Bitte erklären :-)

+1

Übergeben Sie die Referenz des Elements an 'setTimeout()' anstelle von dessen Rückgabewert, also 'setTimeout (print, 5000);' - notieren Sie das Fehlen von '()' –

+0

Ich weiß nicht, warum Sie explizit erwähnt jQuery im Titel der Frage, aber Sie haben es nicht noch einmal erwähnt oder verwenden Sie es in der Beispielcode, also habe ich die Erwähnung heraus und das Tag entfernt. – nnnnnn

Antwort

1

Sie müssen Funktionsnamen als Parameter übergeben, die (indirekt eine Funktion Verweis auf die Timercallback) ist. Aber übergeben "print()", was impliziert, Druckfunktion ausführen und das Ergebnis zurückgeben, weshalb die Funktion sofort aufgerufen wird und später nicht mit Timer registriert.

3

entfernen Klammer nach print() seit setTimeout nimmt function Referenz nicht der return Wert von function (als Folge der function Aufruf)

setTimeout(print, 5000); 
1
function print() { 
alert('Displayed after 5 seconds!'); 
}; 
setTimeout(print(), 5000); 

In dieser Erklärung rufen wir den Druck Funktion bei der Definition selbst. Stattdessen, wenn wir die Funktion nach 5000 ms aufrufen möchten, müssen wir weitergeben müssen:

setTimeout(print, 5000); 
Verwandte Themen