Maison > interface Web > js tutoriel > Comment réaliser un chaînage asynchrone dans une promesse de boucle JavaScript ES6 ?

Comment réaliser un chaînage asynchrone dans une promesse de boucle JavaScript ES6 ?

Barbara Streisand
Libérer: 2024-11-22 11:52:12
original
802 Les gens l'ont consulté

How to Achieve Asynchronous Chaining in a JavaScript ES6 Promise for Loop?

Promesse JavaScript ES6 pour boucle avec chaînage asynchrone

Dans le code fourni, une tentative est faite pour créer une boucle for qui itère 10 fois et crée une promesse pour chacune itération. Cependant, la boucle s'exécute de manière synchrone, ce qui entraîne un résultat imprévisible. L'objectif est de garantir que chaque promesse ne s'exécute qu'après la résolution de la précédente.

Promisifying setTimeout

Pour faciliter la solution, nous définissons une fonction d'assistance appelée délai qui promet la fonction setTimeout :

const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
Copier après la connexion

Création Promesses asynchrones

Pour garantir une exécution asynchrone, nous créons une promesse initiale qui se résout immédiatement. Chaque promesse suivante est chaînée à la précédente :

let p = Promise.resolve();
for (let i = 0; i < 10; i++) {
    p = p.then(() => delay(Math.random() * 1000))
         .then(() => console.log(i));
}
Copier après la connexion

Cette approche garantit que chaque itération de boucle crée une promesse qui se résout une fois la promesse précédente terminée. L'instruction console.log(i) sera exécutée dans le bon ordre, en imprimant les valeurs de 0 à 9.

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.cn
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