Node.js - Concept de rappels

Qu'est-ce que le rappel?

Le rappel est un équivalent asynchrone pour une fonction. Une fonction de rappel est appelée à la fin d'une tâche donnée. Node fait un usage intensif des rappels. Toutes les API de Node sont écrites de manière à prendre en charge les rappels.

Par exemple, une fonction de lecture d'un fichier peut commencer à lire le fichier et renvoyer immédiatement la commande à l'environnement d'exécution afin que l'instruction suivante puisse être exécutée. Une fois les E / S du fichier terminées, il appellera la fonction de rappel tout en passant la fonction de rappel, le contenu du fichier comme paramètre. Il n'y a donc pas de blocage ou d'attente d'E / S de fichier. Cela rend Node.js hautement évolutif, car il peut traiter un grand nombre de demandes sans attendre qu'une fonction renvoie des résultats.

Exemple de code de blocage

Créez un fichier texte nommé input.txt avec le contenu suivant -

Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Créez un fichier js nommé main.js avec le code suivant -

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

console.log(data.toString());
console.log("Program Ended");

Maintenant, exécutez le main.js pour voir le résultat -

$ node main.js

Vérifiez la sortie.

Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!
Program Ended

Exemple de code non bloquant

Créez un fichier texte nommé input.txt avec le contenu suivant.

Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Mettez à jour main.js pour avoir le code suivant -

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");

Maintenant, exécutez le main.js pour voir le résultat -

$ node main.js

Vérifiez la sortie.

Program Ended
Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Ces deux exemples expliquent le concept d'appels bloquants et non bloquants.

  • Le premier exemple montre que le programme se bloque jusqu'à ce qu'il lit le fichier et ensuite seulement il procède à la fin du programme.

  • Le deuxième exemple montre que le programme n'attend pas la lecture du fichier et procède à l'impression «Programme terminé» et en même temps, le programme sans blocage continue la lecture du fichier.

Ainsi, un programme de blocage s'exécute beaucoup en séquence. Du point de vue de la programmation, il est plus facile d'implémenter la logique mais les programmes non bloquants ne s'exécutent pas en séquence. Dans le cas où un programme doit utiliser des données à traiter, il doit être conservé dans le même bloc pour en faire une exécution séquentielle.