In Node.js ist es beim Umgang mit asynchronen Rückrufen wichtig, die grundsätzlich nicht blockierende Natur der Plattform zu verstehen . Dieser Artikel befasst sich mit einer häufigen Herausforderung: Wie lässt man eine Funktion auf den Abschluss eines Rückrufs warten?
Betrachten Sie die folgende vereinfachte Funktion:
function(query) {
myApi.exec('SomeCommand', function(response) {
return response;
});
}
Das Ziel besteht darin, myApi.exec aufzurufen und die im Rückruf empfangene Antwort zurückzugeben. Dieser Code kehrt jedoch sofort zurück, wodurch er unwirksam wird.
Die ereignisgesteuerte Architektur von Node.js schreibt vor, dass die „gute“ Methode zum Umgang mit asynchronen Rückrufen nicht warten. Stattdessen sollten Funktionen einen Rückrufparameter akzeptieren, der nach Abschluss des Vorgangs aufgerufen wird. Der Aufrufer sollte keinen herkömmlichen „Rückgabewert“ erwarten, sondern vielmehr einen Rückruf bereitstellen, um das Ergebnis zu verarbeiten.
function(query, callback) {
myApi.exec('SomeCommand', function(response) {
// additional processing...
callback(response); // This "returns" the value to the caller
});
}
Verwendung:
myFunction(query, function(returnValue) {
// Use the return value here
});
Bei diesem Ansatz blockiert die Funktion nicht und ermöglicht der Ereignisschleife, mit der Verarbeitung anderer Aufgaben fortzufahren. Wenn der Rückruf aufgerufen wird, verarbeitet die bereitgestellte Funktion das Ergebnis asynchron.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3