Promise.all对带参数的promises数组

时间:2016-12-20 12:43:55

标签: javascript object promise

当参数传递给每个promise时,如何向Promise.all添加一个promises数组?

例如;

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], ...)。这实际上将在一个循环中进行,这样我就可以遍历一个表单对象,传递每个键以获得一组相关的promises并将值传递给每个promise。

编辑 Fiddle为好奇人实现了接受的答案。

1 个答案:

答案 0 :(得分:8)

使用map调用函数并返回一组promise。

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的更多信息。