Heim > Artikel > Web-Frontend > Wie kann ich Node.js-Funktionen für Rückrufe in der ereignisgesteuerten Programmierung anhalten?
Ereignisgesteuerte Funktionsausführung in Node.js: Warten auf Rückrufe
Im Kontext der ereignisgesteuerten Programmierung ist dies häufig erforderlich Führen Sie Routinen aus, die vom Abschluss asynchroner Aufgaben abhängen. In Node.js werden häufig Rückrufe verwendet, um solche Aufgaben zu erledigen. Es gibt jedoch Fälle, in denen es wünschenswert ist, eine Funktion „anzuhalten“, bis ein Rückruf aufgerufen wurde.
Stellen Sie sich eine vereinfachte Funktion vor:
function(query) { myApi.exec('SomeCommand', function(response) { return response; }); }
Diese Funktion zielt darauf ab, die Antwort von zurückzugeben myApi.exec()-Aufruf. Die Implementierung funktioniert jedoch nicht wie beabsichtigt, da Node.js sofort zurückkehrt, bevor der Rückruf ausgeführt wird.
Ein naiver Versuch, dieses Problem zu lösen, könnte die Verwendung einer While-Schleife beinhalten:
function(query) { var r; myApi.exec('SomeCommand', function(response) { r = response; }); while (!r) {} return r; }
Dieser Ansatz ist ineffektiv, da er Codeblockierung einführt und die ereignisgesteuerte Natur von Node.js beeinträchtigt.
Der Node.js-Weg: Rückrufe nutzen
Der Die beste Lösung in diesem Szenario besteht darin, das Rückrufmuster zu nutzen und eine Blockierung der Ausführung zu vermeiden. Anstatt auf einen Rückgabewert zu warten, sollte Ihre Funktion einen Rückrufparameter akzeptieren, der aufgerufen wird, wenn der Vorgang abgeschlossen ist:
function(query, callback) { myApi.exec('SomeCommand', function(response) { // Do additional processing if necessary... callback(response); }); }
Mit diesem Ansatz können Sie asynchrone Aufgaben ausführen, ohne auf deren Abschluss warten zu müssen. Der Aufrufer sollte keinen „Rückgabewert“ im herkömmlichen Sinne erwarten, sondern vielmehr eine Routine zur Verarbeitung der resultierenden Daten angeben:
myFunction(query, function(returnValue) { // Use the return value here. });
Durch die Einhaltung dieses Musters bleibt Ihr Code nicht blockierend und ereignisgesteuert , um eine effiziente Ausführung in Node.js sicherzustellen.
Das obige ist der detaillierte Inhalt vonWie kann ich Node.js-Funktionen für Rückrufe in der ereignisgesteuerten Programmierung anhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!