Aujourd'hui, j'ai continué à apprendre Node.js avec l'aide de ChatGPT, et nous nous sommes concentrés sur la programmation asynchrone. C'est l'un des concepts les plus importants de Node.js, et je suis ravi d'avoir commencé à le maîtriser.
Théorie
Dans Node.js, la programmation asynchrone est cruciale en raison de son architecture non bloquante et basée sur les événements. Cela signifie que les opérations telles que la lecture de fichiers, les requêtes de base de données ou les requêtes réseau ne bloquent pas l'exécution d'autres codes en attendant un résultat.
Nous avons exploré trois manières principales de gérer les opérations asynchrones :
Rappels : Fonctions passées en arguments à d'autres fonctions, qui sont exécutées une fois une opération asynchrone terminée.
const fs = require('fs'); fs.readFile('example.txt', 'utf8', (err, data) => { if (err) { console.error(err); return; } console.log(data); });
Promesses : Objets représentant l'achèvement (ou l'échec) éventuel d'une opération asynchrone et sa valeur résultante. Les promesses permettent le chaînage et rendent le code plus lisible par rapport aux rappels imbriqués.
const fs = require('fs').promises; fs.readFile('example.txt', 'utf8') .then(data => { console.log(data); }) .catch(err => { console.error(err); });
Async/Await : Sucre syntaxique construit sur Promises qui permet d'écrire du code asynchrone de manière synchrone.
const fs = require('fs').promises; async function readFile() { try { const data = await fs.readFile('example.txt', 'utf8'); console.log(data); } catch (err) { console.error(err); } } readFile();
Tâche pratique
Aujourd'hui, je me suis entraîné à convertir une fonction basée sur un rappel en une fonction basée sur une promesse.
Code original avec rappels :
const fs = require('fs'); function readFileCallback(path, callback) { fs.readFile(path, 'utf8', (err, data) => { if (err) { callback(err); return; } callback(null, data); }); } readFileCallback('example.txt', (err, data) => { if (err) { console.error(err); return; } console.log(data); });
Conversion en promesses :
const fs = require('fs').promises; function readFilePromise(path) { return fs.readFile(path, 'utf8'); } readFilePromise('example.txt') .then(data => { console.log(data); }) .catch(err => { console.error(err); });
Tâche indépendante
J'ai également écrit une fonction asynchrone utilisant async/await qui lit le contenu d'un fichier et l'enregistre sur la console. Si une erreur se produit (par exemple, fichier introuvable), il doit détecter l'erreur et la consigner.
const fs = require('fs').promises; async function readFileAsync(path) { try { const data = await fs.readFile(path, 'utf8'); console.log(data); } catch (err) { console.error(err); } } readFileAsync('example.txt');
Ressources
Toutes les leçons créées par ChatGPT peuvent être trouvées sur : https://king-tri-ton.github.io/learn-nodejs
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!