0
votes

Comment attendre que la promesse s'exécute en boucle for en utilisant node.js?

J'utilise node.js et j'ai un problème avec for-loop et promise. Comment puis-je attendre promise.then () avant la prochaine étape de la boucle for?

var array = ["apple", "orange"]

for (var i in array) {
            console.log(array[i])
            var promise = //any promise, doesn't matter now 
            promise.then(function(result) {
               console.log(array[i])
            }) 
            .catch(function() {
               console.log("Promise Rejected");
            });
}

Je m'attends à ce que la sortie soit "pomme", "pomme", "orange", "orange ", mais le résultat réel est" pomme "," orange "," orange "," orange "


3 Réponses :


1
votes

Vous pouvez utiliser async / await pour attendre l'exécution. Quelques mises à jour dans votre code comme -

async function test() {
   var array = ["apple", "orange"];
   for (var i in array) {
           try{
               console.log(array[i])
               var promise = //any promise, doesn't matter now 
               await promise;
               console.log(array[i]) 
            }catch(err) {
               console.log("Promise Rejected");
            }
    }
}


0 commentaires

0
votes

Nous pouvons utiliser async / await pour nous donner ce comportement. La fonction testAwait () retournera immédiatement, mais nous attendez la sortie de getResult () à chaque itération de la boucle.

var array = ["apple", "orange"]

// Mock function, could represent an API call etc..
function getResult(arg) { 
    return new Promise(resolve => setTimeout(resolve, 500, arg + "_result"));
}

async function testAwait() {
    for (var i in array) {
        console.log("Loop counter:", i)
        console.log("Input:", array[i])
        // getResult returns a Promise, we'll _await_ it here..
        let result = await getResult(array[i]);
        console.log("Result:", result); 
    }
}

testAwait();


0 commentaires

0
votes

Vous pouvez utiliser promesses < / a> ou ASYNC / Attendre pour une manipulation complexe Nous devons utiliser à la fois Promise avec async / attendre .

en utilisant une promesse xxx

par async et attendre xxx


0 commentaires