"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Apprendre Node.js en quelques jours avec l'IA - Jour 4

Apprendre Node.js en quelques jours avec l'IA - Jour 4

Publié le 2024-11-05
Parcourir:348

Learning Node.js in Days with AI - Day 4

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 :

  1. Callbacks : Fonctions transmises comme arguments à d'autres fonctions, qui sont exécutées une fois qu'une opération asynchrone est terminée.

    const fs = require('fs');
    
    fs.readFile('example.txt', 'utf8', (err, data) => {
        if (err) {
            console.error(err);
            return;
        }
        console.log(data);
    });
    
  2. 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);
        });
    
  3. 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 d'origine 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

Déclaration de sortie Cet article est reproduit sur : https://dev.to/king_triton/learning-nodejs-in-30-days-with-ai-day-4-3o69?1 En cas de violation, veuillez contacter [email protected] pour le supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3