Node.js - Callbacks Concept
Cos'è la richiamata?
Il callback è un equivalente asincrono per una funzione. Una funzione di callback viene chiamata al completamento di una determinata attività. Node fa un uso massiccio di callback. Tutte le API di Node sono scritte in modo tale da supportare i callback.
Ad esempio, una funzione per leggere un file può iniziare a leggere il file e restituire immediatamente il controllo all'ambiente di esecuzione in modo che l'istruzione successiva possa essere eseguita. Una volta completato l'I / O del file, chiamerà la funzione di callback mentre passa la funzione di callback, il contenuto del file come parametro. Quindi non c'è blocco o attesa per File I / O. Ciò rende Node.js altamente scalabile, poiché può elaborare un numero elevato di richieste senza attendere che alcuna funzione restituisca risultati.
Esempio di codice di blocco
Crea un file di testo denominato input.txt con il seguente contenuto -
Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!
Crea un file js denominato main.js con il seguente codice -
var fs = require("fs");
var data = fs.readFileSync('input.txt');
console.log(data.toString());
console.log("Program Ended");
Ora esegui main.js per vedere il risultato -
$ node main.js
Verifica l'output.
Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!
Program Ended
Esempio di codice non bloccante
Crea un file di testo denominato input.txt con il seguente contenuto.
Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!
Aggiorna main.js per avere il seguente codice:
var fs = require("fs");
fs.readFile('input.txt', function (err, data) {
if (err) return console.error(err);
console.log(data.toString());
});
console.log("Program Ended");
Ora esegui main.js per vedere il risultato -
$ node main.js
Verifica l'output.
Program Ended
Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!
Questi due esempi spiegano il concetto di blocco e non blocco delle chiamate.
Il primo esempio mostra che il programma si blocca fino a quando non legge il file e solo dopo continua a terminare il programma.
Il secondo esempio mostra che il programma non attende la lettura del file e procede a stampare "Programma terminato" e contemporaneamente il programma senza blocco continua a leggere il file.
Pertanto, un programma di blocco viene eseguito molto in sequenza. Dal punto di vista della programmazione è più semplice implementare la logica ma i programmi non bloccanti non vengono eseguiti in sequenza. Nel caso in cui un programma necessiti di utilizzare qualsiasi dato per essere elaborato, dovrebbe essere mantenuto all'interno dello stesso blocco per renderlo sequenziale.