我想要做的是使用字符串数组来使用这些值为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);
});
}
答案 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
});