codestory

Das Konzept von Callback in NodeJS

  1. Was ist Callback ?
  2. Zum Beispiel: NodeJS Callback

1. Was ist Callback ?

Um was ist Callback zu erklären, sehen wir ein Fall wie folgend :
Sie kommen zu das Geschäft um ein Lieblingsding zu kaufen. Der Geschäftsmitarbeiter sagt Ihnen, dass das Ding vergriffen ist. Sie lassen Ihre Handynummer und bitten um die Rückanruf wenn das Ding verfügbar ist. Danach können Sie ausgehen oder etwas machen und haben keine Sorge für das Geschäft nicht mehr, zum wenn Sie die Anruf vom Geschäft bekommen
Der Server NodeJS kann die Anforderungen (request) aus meheren Benutzer bekommen. Deshalb werden alle API vom NodeJS zur Verbesserung der Service-kapazität entwickelt um das Callback zu unterstützen. "callback" ist eine Funktion (function), die angeruft werden wird wenn NodeJs eine bestimmte Aufgabe (task) zu erledigen.

2. Zum Beispiel: NodeJS Callback

Im NodeJS werden API entwickelt um Callback zu unterstützen. Angenommen, Sie schreiben ein Programm um 2 Files zu lesen. Um das Ding zu tun, verwenden Sie das Modul fs, das Sie 2 Funktion anbietet um die File readFile und readFileSync zu lesen. Wir werden den Unterschied zwischen 2 Funktionen kennen lernen
Blocking
readFileSync ist eine synchron die File lesende Funktion (synchronous), so wenn die Funktion gerade implementiert, wird sie das Programm der Implementation der nächsten Kode-linie blockieren.
blocking-example.js
var fs = require("fs");

// -----> Read file 1:
console.log("\n");
console.log("Read File 1");

var data1 = fs.readFileSync('C:\\test\\file1.txt');

console.log("- Data of file 1: ");
console.log(data1.toString());


// -----> Read file 2:
console.log("\n");
console.log("Read File 2");

var data2 = fs.readFileSync('C:\\test\\file2.txt');
console.log("- Data of file 2: ");
console.log(data2.toString());


console.log("\n");
console.log("Program Ended");
Öffnen Sie das Fenster CMD und implementieren die File blocking-example.js.
node callback-examples/blocking-example.js
Und das ist das Ergebnis
Non Blocking
Sie sollen die Funktion readFile verwenden um die besser Leistung für das Programm zu erreichen. Diese Funktion liest die File asynchron (asynchronous), sie blockiert (non block) das Programm nicht, die nächten Kode-Linie zu implementieren. In die andere Seite wartet das Programm auf die Erledigung der Funktion. Wenn die Funktion aber ihre Aufgabe erledigt, wird sie auf die Funktion Callback aufrufen.
// Read a file Asynchronous.
fs.readFile('C:\\test\\file1.txt', aCallbackFunction );
Das volle Beispiel schauen
non-blocking-example.js
var fs = require("fs");

// A Callback function!
function readFinishedFile1(err, data)  {
   if (err) console.log(err);
   console.log("- Data of file 1: ");
   console.log(data.toString());
}

// A Callback function!
function readFinishedFile2(err, data)  {
   if (err) console.log(err);
   console.log("- Data of file 2: ");
   console.log(data.toString());
}

// -----> Read file 1:
console.log("\n");
console.log("Read File 1");

fs.readFile('C:\\test\\file1.txt', readFinishedFile1);

// -----> Read file 2:
console.log("\n");
console.log("Read File 2");

fs.readFile('C:\\test\\file2.txt', readFinishedFile2);

console.log("\n");
console.log("Program Ended \n");
Öffnen Sie das Fenster CMD und laufen die File non-blocking-example.js:
node callback-examples/non-blocking-example.js
Und das ist das Ergebnis, das Sie bekommen haben