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

Comment garantir l'exécution d'une boucle synchrone avec les opérations de promesse ?

Linda Hamilton
Libérer: 2024-11-03 00:13:29
original
1028 Les gens l'ont consulté

How to Ensure Synchronous Loop Execution with Promise Operations?

Coordonner une boucle avec des promesses

Énoncé du problème

Comment pouvons-nous garantir qu'une boucle itère de manière synchrone, en exécutant chaque itération promesse et son opération de journalisation ultérieure (logger.log(res)) dans le bon commander ?

Solution

Éviter PromiseWhile

Bien que la fonction promiseWhile puisse faciliter le bouclage avec des promesses, elle ne garantit pas le ordre d'exécution pour les opérations chaînées.

Utilisation de Réduire pour Sérialisation

Pour maintenir l'ordre souhaité, nous pouvons exploiter Array.prototype.reduce() pour créer une chaîne plate d'opérations .then(). Cela élimine le besoin de récursivité.

<code class="javascript">function fetchUserDetails(arr) {
    return arr.reduce(function(promise, email) {
        return promise.then(function() {
            return db.getUser(email).done(function(res) {
                logger.log(res);
            });
        });
    }, Promise.resolve());
}</code>
Copier après la connexion

Exemple d'utilisation

<code class="javascript">// Compose an array of email addresses
var arrayOfEmailAddys = [...];

fetchUserDetails(arrayOfEmailAddys).then(function() {
    console.log('all done');
});</code>
Copier après la connexion

Avantages

Cette approche élimine le variable supplémentaire et fonction de condition requises dans la méthode promiseWhile. De plus, cela simplifie le code et garantit le bon ordre des exécutions de promesses.

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