Latest web development tutorials

Node.js funkcja zwrotna

Bezpośrednio odzwierciedla node.js asynchroniczne programowania jest wywołanie zwrotne.

Powołując się na zwrotnej programowania asynchronicznego do osiągnięcia, ale nie można powiedzieć, że po użyciu wywołania zwrotnego programu asynchronicznym.

Funkcja oddzwaniania zostanie wywołana po zakończeniu zadania, węzeł wykorzystuje wiele wywołań zwrotnych, Węzeł API obsługuje wszystkie funkcje zwrotne.

Na przykład, możemy przeczytać stronę pliku, podczas realizacji innych poleceń, po przeczytaniu dokument jest kompletny, będziemy złożenia zawartość jako argument do funkcji zwrotnej powraca. W wykonywaniu kodu nie są zablokowane lub czeka na pliku operacji I / O. To znacznie poprawia wydajność node.js może obsługiwać dużą liczbę jednoczesnych żądań.


Blokowanie przykłady kodu

Tworzenie input.txt pliku, brzmi następująco:

本教程官网地址:www.w3big.com

Tworzenie main.js pliku, w sposób następujący:

var fs = require("fs");

var data = fs.readFileSync('input.txt');

console.log(data.toString());
console.log("程序执行结束!");

Powyższy kod jest wykonywany w następujący sposób:

$ node main.js
本教程官网地址:www.w3big.com

程序执行结束!

Non-blocking przykłady kodu

Tworzenie input.txt pliku, brzmi następująco:

本教程官网地址:www.w3big.com

Tworzenie main.js pliku, w sposób następujący:

var fs = require("fs");

fs.readFile('input.txt', function (err, data) {
    if (err) return console.error(err);
    console.log(data.toString());
});

console.log("程序执行结束!");

Powyższy kod jest wykonywany w następujący sposób:

$ node main.js
程序执行结束!
本教程官网地址:www.w3big.com

Zdajemy sobie sprawę, powyższe dwa przykłady różnych blokowania połączeń i non-blocking. Po pierwszej instancji pliku jest odczytywany przed wykonaniem programu. Druga instancja nie musimy czekać, aby przeczytać cały plik, tak że następny kod może być wykonywane w tym samym czasie podczas odczytu pliku, co znacznie poprawia wydajność programu.

W ten sposób, poprzez blokowanie jest wykonywany sekwencyjnie, a nie blokowanie nie jest wymagane w porządku, więc jeśli trzeba obsłużyć parametru funkcji zwrotnej, musimy napisać w funkcji zwrotnej.