如何为Promise.all参数映射字符串数组?

时间:2018-08-19 19:11:53

标签: javascript arrays promise

我想要做的是使用字符串数组来使用这些值为Promise.all参数映射一个新的promise函数数组。

我认为到目前为止可以解释我的思考过程以及遇到的问题。

const strings = ['A', 'B', 'C'] // Varies in size
const stringFunctions = strings.map(item => {
  const func = () => {
    promised(item) // Returns Promised Boolean
  }
  return func
})

const PromiseAll = new Promise(function(resolve, reject) {
  Promise.all(stringFunctions)
    .then(items => {
      const obj = {};
      items.forEach((item, index) => {
        obj[strings[index]] = item;
      });
      resolve(obj); 
      // returns { A: func(), B: func(), C: func() }
      // expected { A: bool, B: bool, C: bool }
    })
    .catch(error => {
      reject(error);
    });
}

1 个答案:

答案 0 :(得分:2)

无需创建任何明确的承诺即可完成此操作(您在promised函数和Promise.all()中拥有所需的全部内容)。

let strings = [ ... ]
let promises = strings.map(string => promised(string));
Promise.all(promises).then(results => {
    // results is a new array of results corresponding to the "promised" results
});