English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Fonction de rappel Node.js:L'asynchronisme est l'un des facteurs fondamentaux qui ont rendu Node.js populaire. Les rappels sont l'implémentation asynchrone des fonctions. En règle générale, dans Node.js, la plupart des fonctions de traitement des ressources ont une variante de rappel.
Lorsque une ressource est appelée pour une tâche asynchrone, le contrôle est immédiatement passé à l'instruction suivante de la fonction. La tâche sur la ressource démarre en parallèle. Cela peut aider Node.js continue à exécuter d'autres tâches, tandis que cette fonction utilise cette ressource. Une fois que la tâche utilisant la ressource est terminée, Node.js utilise la fonction de rappel pour reprendre. Appel La fonction de rappel Callback est accompagnée de paramètres : objet de données, objet de résultat et (ou) objet d'erreur contenant des informations sur la tâche.
Fonction bloquante :En revanche, la fonction synchrone exécute un bloc jusqu'à ce que la ressource soit terminée. Par conséquent, la fonction synchrone est également appelée fonction bloquante.
Fonction de rappel imbriquée Node.js :Si plusieurs opérations sont effectuées sur une ressource en séquence et qu'elles doivent être exécutées de manière asynchrone, les fonctions de rappel peuvent être imbriquées les unes dans les autres.
Maintenant, lors de la lecture d'un fichier (ressource) (tâche), nous verrons trois cas par rapport à la fonction de rappel et à la fonction bloquante.
Exemple de fonction bloquante Node.js
Exemple de fonction de rappel Node.js
Exemple de fonction de rappel imbriquée Node.js
Voici un exemple de script Node.js qui lit le fichier sample.txt de manière synchrone.
var fs = require('fs'); // Lecture du fichier sample.txt var data = fs.readFileSync('sample.txt'); console.log("Lecture du fichier terminée : ") + new Date().toISOString()); console.log("Après l'instruction readFileSync : ", + new Date().toISOString());
Lorsque le programme ci-dessus est exécuté
Sortie de terminal
arjun@arjun-VPCEH26EN:~/nodejs$ node read-file-sync.js Lecture du fichier terminée : 2017-10-19T12:21:40.103Z Après l'instruction readFileSync : 2017-10-19T12:21:40.105Z
L'instruction after readFileSync est toujours exécutée après la lecture complète du fichier. fs.readFileSync bloque le flux d'exécution.
Voici un exemple de script Node.js, qui utiliseFonction de rappel Node.jsLecture asynchrone du fichier sample.txt.
var fs = require('fs'); // Lecture du fichier sample.txt fs.readFile('sample.txt', // Fonction de rappel appelée lors de la lecture d'un fichier terminée function(err, data) { if (err) throw err; // Les données sont une zone tampon contenant le contenu du fichier console.log("Lecture du fichier terminée : ") + new Date().toISOString()); }); console.log("Après readFile de manière asynchrone : "); + new Date().toISOString());
Lorsque le programme ci-dessus est exécuté
Sortie de terminal
arjun@arjun-VPCEH26EN:~/nodejs$ node read-file-async.js Après readFile de manière asynchrone : 2017-10-19T12:25:36.982Z Lecture du fichier terminée : 2017-10-19T12:25:36.987Z
Vous pourriez remarquer que, même après l'exécution de console.log dans l'instruction asynchrone readFile, il faut environ5millisecondes. file. fs.readFile('sample.txt', fonction de rappel {..}) n'a pas bloqué l'exécution, mais a démarré un nouveau processus en parallèle avec le flux principal de contrôle pour lire le fichier (exécuter une tâche sur les ressources).
Pour illustrer les fonctions de rappel imbriquées de Node.js, nous considérerons la stratégie de renommer un fichier puis de le supprimer en utilisant une fonction asynchrone.
var fs = require('fs'); fs.rename('sample.txt', 'sample_old.txt', // Première fonction de rappel function (err) { if (err) throw err; console.log('Fichier renommé.'); fs.unlink('sample_old.txt', // Deuxième fonction de rappel function (err) { if (err) throw err; console.log('Fichier supprimé.'); } ); } );
Lorsque l'exemple Node.js ci-dessus est exécuté avec node
Sortie de terminal
arjun@arjun-VPCEH26EN:~/nodejs$ node nodejs-imbriqué-callback.js Fichier renommé. Fichier supprimé.
Dans ce tutoriel Node.js – Fonctions de rappel de Node.js, nous avons appris le flux d'exécution des fonctions de rappel et comment elles mettent en œuvre un comportement non bloquant, ainsi que comment les combiner avec des fonctions de rappel imbriquées dans des exemples.