Signification :
S'il y a de l'asynchrone, il y aura certainement une synchronisation
Chaque fonction de rappel qui existe est un code asynchrone
Exécutez d'abord le code synchrone, après avoir vu le code asynchrone, placez le code asynchrone dans la zone d'exécution du code asynchrone (non exécuté en premier)
Continuez à exécuter le code synchrone Lorsque toute l'exécution du code synchrone est terminée, exécutez le code asynchrone.
Exemple de code asynchrone :
console.log('1'); setTimeout(()=>{ console.log('2秒后再执行...'); },2000); console.log('end');
Le résultat de sortie après l'exécution du programme :
1
Fin
Exécuter à nouveau après 2 secondes...
Résumé : Le code sera exécuté séquentiellement pendant l'exécution, mais lorsque la fonction de rappel est exécutée, ce sera La fonction de rappel est placée dans la zone d'exécution de code asynchrone et n'est pas exécutée au début. Une fois le code exécuté, il est exécuté séquentiellement et placé dans la zone d'exécution de code asynchrone.
Cas de la ligne de code synchronisé :
for(let i=0;i<10;i++){ console.log(i); } console.log('end');
Le résultat de sortie après l'exécution du programme :
0123456789
fin
Résumé : Code synchrone, quelle que soit la durée d'exécution de la boucle for, le code suivant doit l'attendre à terminer avant d'être exécuté.
Le rôle de la programmation asynchrone est d'améliorer l'efficacité. De nos jours, les programmes sont de plus en plus volumineux, et la pression sur le processeur et la mémoire augmente également. L'asynchrone permet à l'ordinateur de traiter plusieurs transactions en même temps, donc la programmation asynchrone est importante. nécessaire.
3. Comment gérer les problèmes qui surviennent dans la programmation asynchrone
Il y a maintenant trois fichiers txt 1, 2 et 3 dans le dossier. Nous devons lire ces trois fichiers directement. La commande peut être dans le désordre la deuxième fois, nous devons donc résoudre le problème asynchrone et la laisser s'exécuter dans l'ordre
Utilisez la fonction de rappel pour imbriquer le code :
const fs=require('fs') const path =require('path') let p1=path.join('1.txt') let p2=path.join('2.txt') let p3=path.join('3.txt') fs.readFile(p1,'utf8',(err,data)=>{ if(err) throw err console.log(data) fs.readFile(p2,'utf8',(err,data)=>{ if(err) throw err console.log(data) fs.readFile(p3,'utf8',(err,data)=>{ if(err) throw err console.log(data) }) }) })
Utilisez le code de promesse :
// new promise 的作用:让异步代码马上执行 const fs=require('fs') function readFile(path){ return new Promise((resolve,reject)=>{ fs.readFile(path,'utf8',(err,data)=>{ resolve(data) }) }) } let p1=readFile('1.txt') let p2=readFile('2.txt') let p3=readFile('3.txt') p1.then(result=>{ console.log(result) return p2 }).then(result=>{ console.log(result) return p3 }).then(result=>{ console.log(result) return p3 })
Très bien, utilisez wait et Code sucre de syntaxe asynchrone :
const path=require('path') const fs=require('fs') let p1=readFile('1.txt') let p2=readFile('2.txt') let p3=readFile('3.txt') var readfile=(path)=>{ return new Promise((resolve,reject)=>{ fs.readFile(path,'utf8',(err,data)=>{ resolve(data) }) }) } async function exec() { await readfile(p1).then(result => console.log(result)) await readfile(p2).then(result => console.log(result)) await readfile(p3).then(result => console.log(result)) } exec()
[Recommandé :
Tutoriel vidéo Node.jsCe 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!