Maison > interface Web > js tutoriel > [Node.js] La différence entre synchronisation et asynchronisme

[Node.js] La différence entre synchronisation et asynchronisme

帅杰杰
Libérer: 2020-05-13 16:00:11
original
234 Les gens l'ont consulté

Pour utiliser Node.js pour les opérations sur les fichiers, vous devez d'abord utiliser require('fs') pour charger le modèle de système de fichiers. Le dernier paramètre de la méthode asynchrone est une fonction de rappel complète (fonction de rappel). Les paramètres passés à la fonction de rappel dépendent généralement de la méthode elle-même, mais le premier paramètre est toujours une exception (err). Si la méthode s'exécute avec succès, le premier paramètre sera nul ou indéfini. Lors de l'exécution à l'aide de méthodes synchrones, toutes les exceptions sont immédiatement déclenchées. Nous pouvons utiliser try ou catch pour gérer les exceptions et afficher les informations sur les erreurs.

Donne un exemple de méthode asynchrone, où il y a un fichier hello dans le dossier tmp.

Ce code supprimera le fichier hello dans le répertoire tmp Si la suppression réussit, les informations de suppression réussie seront imprimées dans la console.

引入fs模块
const fs=require("fs");
//异步操作读取文件
fs.unlink('./tmp/hello',(err)=>{
    if(err) throw err;
    console.log('成功删除hello文件');
});
Copier après la connexion

Vous pouvez également utiliser des méthodes asynchrones pour obtenir la même fonction.

引入fs模块
const fs=require("fs");
//同步操作读取文件
fs.unlinkSync('./tmp/hello');
console.log('成功删除hello文件');
Copier après la connexion

Les méthodes d'opération asynchrones ne peuvent pas garantir une exécution réussie, donc l'ordre des opérations sur les fichiers est très important lors de l'exécution du code.

Par exemple : le code suivant provoquera une erreur

//重命名hello文件为world文件
fs.rename('./tmp/hello','./tmp/world',(err)=>{
  if(err) throw err;
  console.log('renamed complete');
});
//获取world文件的信息
fs.stat('./tmp/world',(err)=>{
  if(err) throw err;
    console.log(`stats:${JSON.stringify(stats)}`);
});
Copier après la connexion

fs.stat sera exécuté avant fs.rename La méthode correcte est. Utilisez la fonction de rappel pour exécuter.

Ce qui suit est l'utilisation correcte des fonctions de rappel pour gérer les exceptions lors de l'exécution du programme :

fs.rename('./tmp/hello','./tmp/world',(err)=>{
    if(err) throw err;
    fs.stat('./tmp/world',(err,stats)=>{
        if(err) throw err;
        console.log(`stats:${JSON.stringify(stats)}`);
    });
});
Copier après la connexion

Remarque : dans un grand système, il est recommandé d'utiliser méthodes asynchrones , la méthode de synchronisation entraînera le verrouillage du processus. Par rapport aux méthodes synchrones, les méthodes asynchrones sont plus performantes, plus rapides et moins bloquantes.

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!

Étiquettes associées:
1
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal