Alles was ich tun muss, ist eine Rückruffunktion auszuführen, wenn meine aktuelle Funktionsausführung endet.
function LoadData()
{
alert('The data has been loaded');
//Call my callback with parameters. For example,
//callback(loadedData , currentObject);
}
Ein Verbraucher für diese Funktion sollte folgendermaßen aussehen:
object.LoadData(success);
function success(loadedData , currentObject)
{
//Todo: some action here
}
Wie implementiere ich das?
javascript
Amgad Fahmi
quelle
quelle
object.LoadData(success)
Anruf muss nachfunction success
definiert sein. Andernfalls erhalten Sie eine Fehlermeldung, dass die Funktion nicht definiert ist.Antworten:
Tatsächlich funktioniert Ihr Code so wie er ist. Deklarieren Sie einfach Ihren Rückruf als Argument, und Sie können ihn direkt mit dem Argumentnamen aufrufen.
Die Grundlagen
Das wird anrufen
doSomething
, das wird anrufenfoo
, das wird alarmieren "Zeug geht hierher".Beachten Sie, dass es sehr wichtig ist , um die Funktion zu übergeben Referenz (
foo
), anstatt die Funktion aufrufen und das Ergebnis vorbei (foo()
). In Ihrer Frage machen Sie es richtig, aber es lohnt sich nur darauf hinzuweisen, weil es ein häufiger Fehler ist.Fortgeschrittenere Sachen
Manchmal möchten Sie den Rückruf aufrufen, damit ein bestimmter Wert für angezeigt wird
this
. Mit der JavaScript-call
Funktion können Sie dies ganz einfach tun :Sie können auch Argumente übergeben:
Manchmal ist es nützlich, die Argumente, die Sie dem Rückruf geben möchten, als Array und nicht einzeln zu übergeben. Sie können dies verwenden
apply
, um:quelle
setTimeout()
. Die Antwort ist, den Rückruf in einen Abschluss zudoSomething(function(){foo('this','should','work')})
Es wird empfohlen, sicherzustellen, dass der Rückruf eine tatsächliche Funktion ist, bevor Sie versuchen, ihn auszuführen:
quelle
if(typeof callback == "function")
wird das gleiche Ergebnis haben.callback &&
...Mein 2 Cent. Dasselbe nur anders...
quelle
quelle
==============================================
==============================================
Ergebnis ist:
quelle
Wenn Sie eine Funktion ausführen möchten, wenn etwas erledigt ist. Eine gute Lösung besteht darin, Ereignisse anzuhören. Zum Beispiel werde ich
Dispatcher
eineDispatcherEvent
Klasse mit ES6 implementieren , dann:Dispatcher:
DispatcherEvent:
Viel Spaß beim Codieren!
p / s: Mein Code fehlt, um einige Fehlerausnahmen zu behandeln
quelle
quelle
Wenn wir die Rückruffunktion aufrufen, können wir sie wie folgt verwenden:
consumingFunction(callbackFunctionName)
Beispiel:
Dies ist das Codepend mit vollständigem Beispiel.
quelle
Einige der Antworten sind zwar richtig, aber möglicherweise etwas schwierig zu verstehen. Hier ist ein Beispiel für Laien:
Der Rückruf bedeutet, dass "Jake" immer zu den Benutzern hinzugefügt wird, bevor die Liste der Benutzer mit angezeigt wird
console.log
.Quelle (YouTube)
quelle
Versuchen:
Funktionen sind in JavaScript erstklassig ; Sie können sie einfach weitergeben.
quelle