Maison >interface Web >js tutoriel >[Node.js] La différence entre synchronisation et asynchronisme
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文件'); });
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文件');
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)}`); });
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)}`); }); });
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!