在實際項目中,可能會遇到 需要從前兩個接口中的返回結果獲取第三個接口的請求參數這種情況。 也就是需要等待兩個/多個異步事件完成后,再進行回調。
對於異步回調,首先想到的就會是使用Promise封裝,然后使用.then()來觸發回調。那么對於兩個或多個異步事件均完成后再觸發回調可以使用Promise.all()方法。
**Promise.all(iterable)**
方法返回一個 Promise
實例,此實例在 iterable
參數內所有的 promise
都“完成(resolved)”或參數中不包含 promise
時回調完成(resolve);如果參數中 promise
有一個失敗(rejected),此實例回調失敗(reject),失敗原因的是第一個失敗 promise
的結果。
var promise1 = Promise.resolve('promise1'); var promise2 = new Promise(function(resolve, reject) { setTimeout(resolve, 2000, 'promise2'); }); var promise3 = new Promise(function(resolve, reject) { setTimeout(resolve, 1000, 'promise3'); }); Promise.all([promise1, promise2, promise3]).then(function(values) { console.log(values); }); // expected output: Array ["promise1","promise2", "promise3"]