Quel est l'ordre d'exécution dans les promesses JavaScript ?
Les promesses JavaScript sont un moyen de gérer les opérations asynchrones. Lorsqu'une promesse est résolue, elle exécute ses gestionnaires .then() de manière asynchrone une fois le thread d'exécution en cours terminé. Cela signifie que tout code synchrone dans le thread actuel s'exécutera avant les gestionnaires .then().
Exemple
Considérez l'extrait de code suivant :
<code class="javascript">Promise.resolve('A')
.then(function(a){console.log(2, a); return 'B';})
.then(function(a){
Promise.resolve('C')
.then(function(a){console.log(7, a);})
.then(function(a){console.log(8, a);});
console.log(3, a);
return a;})
.then(function(a){
Promise.resolve('D')
.then(function(a){console.log(9, a);})
.then(function(a){console.log(10, a);});
console.log(4, a);})
.then(function(a){
console.log(5, a);});
console.log(1);
setTimeout(function(){console.log(6)},0);</code>
Copier après la connexion
Le résultat de cet extrait de code est :
<code class="text">1
2 "A"
3 "B"
7 "C"
4 "B"
8 undefined
9 "D"
5 undefined
10 undefined
6</code>
Copier après la connexion
Explication
-
Ligne 1 : Le code commence par résoudre une promesse avec la valeur « A ».
-
Lignes 2 à 4 : Le gestionnaire .then() de cette promesse enregistre la valeur « A » dans la console et renvoie la valeur « B ».
-
Lignes 5 à 9 : Le gestionnaire .then() sur la promesse renvoyée par le gestionnaire précédent enregistre la valeur « B » dans la console et renvoie la même valeur.
-
Lignes 10 à 14 : Le gestionnaire .then() sur la promesse renvoyée par le gestionnaire précédent enregistre la valeur 'B' dans la console et renvoie la même valeur.
-
Lignes 15 à 19 : Le gestionnaire .then() sur la promesse renvoyée par le gestionnaire précédent enregistre la valeur « B » dans la console et renvoie la même valeur.
-
Ligne 20 : Le gestionnaire .then() sur la promesse renvoyée par le gestionnaire précédent enregistre la valeur 'B' sur la console.
-
Ligne 21 : Une fonction setTimeout() est utilisée pour planifier l'exécution d'une fonction après un délai de 0 milliseconde.
-
Ligne 22 : Une fonction console.log() est utilisée pour enregistrer la valeur '1' sur la console.
Ordre de Exécution
L'ordre d'exécution dans cet extrait de code est :
- La console.log() à la ligne 22 est exécutée en premier, suivie de la Promise.resolve() à la ligne 1 .
- Le gestionnaire .then() de la ligne 2 est ensuite exécuté, suivi du gestionnaire .then() de la ligne 5.
- Le gestionnaire .then() de la ligne 10 est ensuite exécuté , suivi du gestionnaire .then() à la ligne 15.
- Le gestionnaire .then() à la ligne 20 est exécuté ensuite.
- La fonction setTimeout() à la ligne 21 est exécutée en dernier.
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!