Un scénario courant implique de parcourir une série d'appels de promesse, tels que des requêtes API, pour garantir que l'ordre d'exécution est maintenu . Bluebird propose une solution via la fonction promiseWhile. Cependant, des inquiétudes subsistent concernant l'ordre des appels logger.log(res) dans la boucle.
Au lieu d'utiliser promiseWhile, envisagez l'approche suivante :
<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>
Ce code :
Invoquez la fonction fetchUserDetails avec le tableau d'adresses e-mail :
<code class="javascript">// Compose an array of email addresses const arrayOfEmailAddys = [...]; fetchUserDetails(arrayOfEmailAddys).then(function() { console.log('all done'); });</code>
Cette approche élimine le besoin de récursion, de compteurs externes et de fonctions de condition complexes, tout en conservant la synchronisation souhaitée des appels logger.log(res).
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!