Le constructeur de promesse accepte une fonction d'exécuteur qui définit la logique d'exécution de la promesse. Une question clé se pose : cette fonction d'exécuteur est-elle exécutée de manière asynchrone ou synchrone ?
Le comportement dépend de la mise en œuvre de la Promesse elle-même. Cependant, le standard ES6 pour les promesses stipule explicitement que l'accomplissement d'une promesse est toujours asynchrone.
En nous référant à la spécification, nous constatons que la fonction exécuteur (dans notre cas, la fonction y ) est en effet exécuté de manière synchrone (voir étape 10 de la spécification). Cependant, les appels ultérieurs à .then() sur la promesse, tels que promise.then(...), sont toujours exécutés de manière asynchrone (voir l'étape 8 de l'algorithme "PerformPromiseThen").
Cette nature asynchrone des appels .then() a plusieurs implications :
Considérez l'extrait de code suivant :
<code class="javascript">function y(resolve, reject) { console.log("Result"); resolve(); } var promise = new Promise(y); promise.then(() => { console.log("Then handler executed after the synchronous execution of y"); });</code>
Dans cet exemple, la fonction y est exécutée de manière synchrone. Cependant, le gestionnaire .then() est exécuté de manière asynchrone une fois la boucle d'événements terminée. La sortie de ce code sera :
Result Then handler executed after the synchronous execution of y
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!