Heim > Artikel > Web-Frontend > So rufen Sie die Funktion auf, nachdem die NodeJS-Anfrage beendet ist
Bei der Node.js-Entwicklung müssen wir häufig eine Rückruffunktion aufrufen, wenn wir eine asynchrone Anfrage stellen. Diese Rückruffunktion ist für die Ausführung einiger Vorgänge nach dem Ende der Anfrage verantwortlich. Das von Node.js bereitgestellte http-Modul ist ein häufig verwendetes Modul zum Initiieren von http-Anfragen. Es kann für Client- oder Server-http-Anfragen verwendet werden.
Im http-Modul verwenden wir normalerweise die Methode http.get() oder http.request(), um eine http-Anfrage zu initiieren. Beide Methoden sind insofern asynchron, als sie auf den Abschluss der Anforderung warten, bevor sie zurückkehren. Wie ruft man also die Rückruffunktion auf, nachdem die Anfrage beendet ist?
Methode 1: Übergeben Sie die Callback-Funktion als Parameter
In der http.get()-Methode und der http.request()-Methode akzeptieren beide Parameteroptionen, die eine Callback-Funktion enthalten können. Diese Rückruffunktion ist die Funktion, die nach Abschluss der Anfrage ausgeführt werden soll.
Zum Beispiel können wir die Methode http.get() verwenden, um den Inhalt einer Webseite abzurufen und den Inhalt nach Abschluss der Anfrage an die Konsole auszugeben:
const http = require('http'); http.get('http://www.example.com', (res) => { let data = ''; // 接收响应数据 res.on('data', (chunk) => { data += chunk; }); // 响应结束时输出结果 res.on('end', () => { console.log(data); }); });
In diesem Beispiel senden wir ihn über http. get()-Methode Eine GET-Anfrage zum Abrufen des Webinhalts von http://www.example.com. Anschließend verketten wir die empfangenen Antwortdaten und geben sie an die Konsole aus, indem wir eine anonyme Funktion als Callback-Funktion definieren.
Methode 2: Promise-Objekt verwenden
Zusätzlich zur Übergabe der Rückruffunktion als Parameter können wir auch Promise-Objekte verwenden, um Vorgänge nach Ende der Anfrage abzuwickeln. Das Promise-Objekt ist eine neue Funktion in ES6, die in den asynchronen Methoden von Node.j weit verbreitet ist.
Im http-Modul können wir ein Promise-Objekt zurückgeben, indem wir die Methode http.get() oder http.request() aufrufen. In diesem Promise-Objekt können wir die Methode then() verwenden, um die Funktion festzulegen, die nach Ende der Anforderung ausgeführt werden soll. Beispielsweise können wir ein Promise-Objekt verwenden, um den Inhalt einer Webseite abzurufen und den Inhalt nach Abschluss der Anfrage an die Konsole auszugeben:
const http = require('http'); const getRequest = (url) => { return new Promise((resolve, reject) => { http.get(url, (res) => { let data = ''; // 接收响应数据 res.on('data', (chunk) => { data += chunk; }); // 响应结束时输出结果 res.on('end', () => { resolve(data); }); }).on('error', (err) => { reject(err); }); }); }; getRequest('http://www.example.com') .then((data) => { console.log(data); }) .catch((err) => { console.error(err); });
In diesem Beispiel verwenden wir eine Funktion namens getRequest(), um ein Promise-Objekt zurückzugeben . Wir packen die http.get()-Methode in ein Promise-Objekt ein und übergeben die Antwortdaten über die Auflösung()-Funktion am Ende der Anfrage an die then()-Methode. Wenn ein Fehler auftritt, werden die Fehlerinformationen über die Funktion „reject()“ an die Methode „catch()“ übergeben. Anschließend geben wir die Antwortdaten aus, indem wir die Methode getRequest() aufrufen und die Methode then() im zurückgegebenen Promise-Objekt definieren.
Zusammenfassung
Die oben genannten sind zwei Möglichkeiten, eine HTTP-Anfrage in Node.js zu initiieren und eine Funktion aufzurufen, nachdem die Anfrage abgeschlossen ist. Indem wir eine Rückruffunktion als Parameter übergeben oder ein Promise-Objekt verwenden, können wir nach Ende der Anfrage benutzerdefinierte Aktionen ausführen. In der tatsächlichen Entwicklung können wir je nach Situation die geeignete Methode zur Bearbeitung asynchroner Anforderungen auswählen.
Das obige ist der detaillierte Inhalt vonSo rufen Sie die Funktion auf, nachdem die NodeJS-Anfrage beendet ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!