2017-09-19 15 views
0

プロミス・イン・ループでは?

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); 
 
     } 
 
);

今では、最初のループの後にデータを警告します。どのように全体のループを通過した後、約束と非同期操作からデータを表示するには?

希望する動作:非同期モードでnewArrにデータを追加し、ループが終了した後に表示します。

+0

で複数の約束を持っている必要があります。.. .. – epascarello

+0

'' 'Promise.all'''はあなたが探しているものです – Wainage

+0

@epascarelloどのように表示できますか? –

答えて

2

は、あなたはすべてのタイムアウトが終了するまで待たなければならないので、よくあなただけ.....一度それを解決することができます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) 
 
});

関連する問題