Maison > interface Web > js tutoriel > le corps du texte

Quel est l'ordre d'exécution des promesses JavaScript ?

Patricia Arquette
Libérer: 2024-10-24 11:22:02
original
935 Les gens l'ont consulté

What Is the Order of Execution in JavaScript Promises?

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

  1. Ligne 1 : Le code commence par résoudre une promesse avec la valeur « A ».
  2. Lignes 2 à 4 : Le gestionnaire .then() de cette promesse enregistre la valeur « A » dans la console et renvoie la valeur « B ».
  3. 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.
  4. 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.
  5. 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.
  6. Ligne 20 : Le gestionnaire .then() sur la promesse renvoyée par le gestionnaire précédent enregistre la valeur 'B' sur la console.
  7. Ligne 21 : Une fonction setTimeout() est utilisée pour planifier l'exécution d'une fonction après un délai de 0 milliseconde.
  8. 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 :

  1. La console.log() à la ligne 22 est exécutée en premier, suivie de la Promise.resolve() à la ligne 1 .
  2. Le gestionnaire .then() de la ligne 2 est ensuite exécuté, suivi du gestionnaire .then() de la ligne 5.
  3. Le gestionnaire .then() de la ligne 10 est ensuite exécuté , suivi du gestionnaire .then() à la ligne 15.
  4. Le gestionnaire .then() à la ligne 20 est exécuté ensuite.
  5. 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!

source:php
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal