Ich versuche, einen Parameter an eine als Rückruf verwendete Funktion zu übergeben. Wie kann ich das tun?
function tryMe (param1, param2) {
alert (param1 + " and " + param2);
}
function callbackTester (callback, param1, param2) {
callback (param1, param2);
}
callbackTester (tryMe, "hello", "goodbye");
Antworten:
Wenn Sie etwas allgemeineres möchten, können Sie die Argumentvariable wie folgt verwenden:
Andernfalls funktioniert Ihr Beispiel einwandfrei (Argumente [0] können anstelle des Rückrufs im Tester verwendet werden).
quelle
callback.apply(arguments)
der Funktionskörper fürcallbackTester
über das Szenario mit zwei Argumenten hinaus erweiterbar.Dies würde auch funktionieren:
Ein weiteres Szenario:
quelle
if (typeof window[callback] == 'function') window[callback].call(this);
Ihre Frage ist unklar. Wenn Sie sich fragen, wie Sie dies auf einfachere Weise tun können, sollten Sie sich die ECMAScript 5th Edition-Methode .bind () ansehen , die Mitglied von Function.prototype ist . Mit ihm können Sie so etwas tun:
Sie können auch den folgenden Code verwenden, der die Methode hinzufügt, wenn sie im aktuellen Browser nicht verfügbar ist:
Beispiel
bind () - PrototypeJS-Dokumentation
quelle
Array.prototype.slice.call(arguments)
undarguments.slice()
?f = function(arg1,arg2){alert(arg1+arg2);}.bind(this,"abc");
f("def") // Gives "abcdef"
Wenn Sie einen Rückruf haben, der von etwas anderem als Ihrem Code mit einer bestimmten Anzahl von Parametern aufgerufen wird, und Sie zusätzliche Parameter übergeben möchten, können Sie eine Wrapper-Funktion als Rückruf übergeben und innerhalb des Wrappers die zusätzlichen Parameter übergeben.
quelle
Wenn Sie nicht sicher sind, wie viele Parameter an Rückruffunktionen übergeben werden sollen, verwenden Sie die
apply
Funktion.quelle
Umschließen Sie die übergebenen 'untergeordneten' Funktionen als / mit Argumenten in Funktionsumbrüchen, um zu verhindern, dass sie beim Aufruf der übergeordneten Funktion ausgewertet werden.
quelle
Code aus einer Frage mit einer beliebigen Anzahl von Parametern und einem Rückrufkontext:
quelle
Verwenden Sie die Curry-Funktion wie in diesem einfachen Beispiel.
quelle
Eine neue Version für das Szenario, in dem der Rückruf von einer anderen Funktion aufgerufen wird, nicht von Ihrem eigenen Code, und Sie zusätzliche Parameter hinzufügen möchten.
Nehmen wir zum Beispiel an, Sie haben viele verschachtelte Aufrufe mit Erfolgs- und Fehlerrückrufen. Ich werde für dieses Beispiel Winkelversprechen verwenden, aber jeder Javascript-Code mit Rückrufen wäre für diesen Zweck der gleiche.
Jetzt möchten Sie möglicherweise Ihren Code übersichtlicher gestalten, indem Sie eine Funktion zum Protokollieren von Fehlern definieren und den Ursprung des Fehlers für Debugging-Zwecke beibehalten. So würden Sie Ihren Code umgestalten:
Die aufrufende Funktion fügt den Fehlerparameter nach den Parametern Ihrer Rückruffunktion hinzu.
quelle
Ich habe nach der gleichen Sache gesucht und am Ende die Lösung gefunden. Hier ist ein einfaches Beispiel, wenn jemand dies durchgehen möchte.
Auch auf die andere Frage hier gepostet
quelle
Lassen Sie mich Ihnen ein sehr einfaches Beispiel für die Verwendung eines Rückrufs im Node.j-Stil geben:
und das HTML, das das Ergebnis rendert:
Sie können hier damit spielen: https://jsfiddle.net/q8gnvcts/ - versuchen Sie beispielsweise, eine Zeichenfolge anstelle einer Zahl zu übergeben: myTest ('eine Zeichenfolge', 6, Funktion (err, Ergebnis) .. und sehen Sie das Ergebnis.
Ich hoffe, dieses Beispiel hilft, weil es die Grundidee von Rückruffunktionen darstellt.
quelle
Lesen Sie mehr über die Spread-Syntax
quelle
quelle