2016-12-20 3 views
6

パラメータが各約束に渡されたときに、約束の配列をPromise.allに追加するにはどうすればよいですか?Promise.allでパラメータ付きの約束の配列

たとえば、

var config = { 
 
    name: [ 
 
    function(val) { 
 
     return new Promise(function(resolve, reject) { 
 
     resolve('This is ok') 
 
     }) 
 
    }, 
 
    function(val) { 
 
     return new Promise(function(resolve, reject) { 
 
     resolve('This is ok') 
 
     }) 
 
    } 
 
    ], 
 
    gender: [ 
 
    function(val) { 
 
     return new Promise(function(resolve, reject) { 
 
     resolve('This is ok') 
 
     }) 
 
    }, 
 
    function(val) { 
 
     return new Promise(function(resolve, reject) { 
 
     reject('This is NOT ok') 
 
     }) 
 
    } 
 
    ] 
 
}

は、私は基本的に Promise.all(config[name], ...)を行うことにしたいです。これは実際にはループ内で行われ、フォームオブジェクトを繰り返し処理し、各キーを渡して関連付けられた約束事を取得し、その値を各約束に渡すことができます。

EDITFiddle好奇心のために、受け入れられた答えを実装します。

+0

あなたのフィドルが死んでいます – Rohmer

+1

@Rohmer link updated – MindVox

答えて

7

mapを使用して関数を呼び出し、約束の配列を返します。

Promise.all(config[name].map(callback => callback(val)) 
    .then(values => { 
     // executed when all promises resolved, 
     // values is the array of values resolved by the promises 
    }) 
    .catch(err => { 
    // catch if single promise fails to resolve 
    }); 

Promise.all hereについて詳しく読むことができます。

関連する問題