English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Node.js-Rückruffunktion: Asynchronität ist einer der Hauptfaktoren, die zur Beliebtheit von Node.js beigetragen haben. Rückrufe sind die Implementierung von Funktionen als asynchron. Im Allgemeinen haben die meisten Ressourcenhandhabefunktionen in Node.js eine Callback-Variante.
: Wenn eine asynchrone Funktion für eine Aufgabe aufgerufen wird, die Ressourcen verwendet, wird der Kontrollfluss sofort fortgesetzt, um die nachfolgenden Anweisungen der Funktion auszuführen. Die Aufgaben auf der Ressource starten parallel. Dies kann helfen Node.js führt andere Aufgaben fort, während die Funktion die Ressource verwendet. Sobald die Aufgabe, die die Ressource verwendet, abgeschlossen ist, verwendet Node.js den Rückruf, um fortzufahren. Der Aufruf Rückruffunktionen haben Parameter: Datenobjekt, Ergebnisobjekt und (oder) Fehlerobjekt, das Informationen über den Aufgabenbezug enthält.
Blockierende Funktionen:Ganz anders als asynchrone Funktionen führen synchrone Funktionen Blöcke aus, bis die Ressource abgeschlossen ist. Daher werden synchrone Funktionen auch als blockierende Funktionen bezeichnet.
Node.js-geschachtelte Rückruffunktionen : Wenn mehrere Operationen auf eine Ressource nacheinander ausgeführt werden müssen und asynchron durchgeführt werden müssen, können die Rückruffunktionen ineinander geschachtelt werden.
Jetzt sehen wir drei Fälle, verglichen mit asynchronen Funktionen, wenn wir Dateien (Ressourcen) lesen.
Beispiel für eine blockierende Funktion in Node.js
Beispiel für eine Node.js-Rückruffunktion
Beispiel für verschachtelte Callback-Funktionen in Node.js
Nachstehend ein Beispiel für ein Node.js-Skript, das die Datei sample.txt synchron liest.
var fs = require('fs'); // Datei sample.txt lesen var data = fs.readFileSync('sample.txt'); console.log("Dateilesevorgang abgeschlossen: ") + new Date().toISOString()); console.log("Nach dem readFileSync-Ausdruck:") + new Date().toISOString());
Wenn das obige Programm ausgeführt wird
Terminalausgabe
arjun@arjun-VPCEH26EN:~/nodejs$ node read-file-sync.js Dateilesevorgang abgeschlossen: 2017-10-19T12:21:40.103Z Nach dem readFileSync-Ausdruck: 2017-10-19T12:21:40.105Z
after readFileSync wird immer nach dem Lesen der Datei ausgeführt. fs.readFileSync blockiert den Ausführungsstrom.
Nachstehend ein Beispiel für ein Node.js-Skript, das mitNode.js-RückruffunktionAsynchrone Lesevorgang der Datei sample.txt.
var fs = require('fs'); // Datei sample.txt lesen fs.readFile('sample.txt', // Rückruffunktion, die aufgerufen wird, wenn das Lesen der Datei abgeschlossen ist function(err, data) { if (err) throw err; // Daten sind Puffer, die den Inhalt der Datei enthalten console.log("Dateilesevorgang abgeschlossen: ") + new Date().toISOString()); }); console.log("Nach der asynchronen read-file: "); + new Date().toISOString());
Wenn das obige Programm ausgeführt wird
Terminalausgabe
arjun@arjun-VPCEH26EN:~/nodejs$ node read-file-async.js Nach der asynchronen read-file: 2017-10-19T12:25:36.982Z Dateilesevorgang abgeschlossen: 2017-10-19T12:25:36.987Z
Sie könnten bemerken, dass selbst nach der Ausführung von console.log in der asynchronen read-file-Anweisung die Lesevorgang der Datei etwa5Millisekunden. file. fs.readFile('sample.txt', callback function{..}) blockiert nicht den Ausführung, sondern startet parallel zum Hauptkontrollfluss einen neuen Prozess, um die Datei zu lesen (Ausführung von Aufgaben auf Ressourcen).
Um die verschachtelten Callback-Funktionen in Node.js zu demonstrieren, betrachten wir das Szenario, eine Datei umzubenennen und dann mit asynchronen Funktionen zu löschen.
var fs = require('fs'); fs.rename('sample.txt', 'sample_old.txt', // Erster Rückruf function (err) { if (err) throw err; console.log('Datei umbenannt.'); fs.unlink('sample_old.txt', // Zweiter Rückruf function (err) { if (err) throw err; console.log('Datei gelöscht.'); } ); } );
Wenn der obige Node.js-Beispiel mit node ausgeführt wird
Terminalausgabe
arjun@arjun-VPCEH26EN:~/nodejs$ node nodejs-nested-callback.js Datei umbenannt. Datei gelöscht.
In diesem Node.js-Tutorial – Node.js-Rückruffunktion haben wir den Ablauf von Rückruffunktionen und wie sie nicht-blockierend sind gelernt, sowie wie man sie mit Beispielen kombinieren kann.