2017-09-19 1 views
0

Comment promettre en boucle?

var arr = ["node.js", "Java", "C#"]; 
 
var newArr = []; 
 

 
let promise = new Promise((resolve, reject) => { 
 

 
     for(let i = 0; i < arr.length; i++) { 
 
      setTimeout(() => { 
 
       newArr.push(arr[i]) 
 
       resolve(newArr); 
 
      }, 1000); 
 
     } 
 

 
}); 
 

 
promise 
 
     .then(result => { 
 
      alert(result); 
 
     } 
 
);

Maintenant alertes données après la première boucle. Comment afficher les données de l'opération asynchrone avec des promesses, après qu'il passe toute la boucle?

Comportement souhaité: Ajoutez des données à newArr en mode asynchrone et affichez-le après la fin de la boucle.

+0

Eh bien, vous ne pouvez résoudre une fois ..... Donc, vous devez attendre jusqu'à ce que tous les délais d'attente sont faits .. .. – epascarello

+0

'' '' Promise.all''' est ce que vous cherchez – Wainage

+0

@epascarello pouvez-vous me montrer comment? –

Répondre

2

Vous devez avoir plusieurs promesses avec promise all

const myPromises = []; 
 
for (let i=0; i<5; i++) { 
 
    myPromises.push(new Promise((resolve, reject) => { 
 
     setTimeout(() => { 
 
     console.log("done", i); 
 
     resolve(i) 
 
     } , i*500); 
 
    })); 
 
} 
 

 
Promise.all(myPromises).then(values => { 
 
    console.log("All: ", values) 
 
});