我试图在数组上映射异步函数,我希望能达到这样的效果:
const result = orgs.map(org =>
f(org)
.then(res => return res))
// now result should be an array of res
console.log(result)
这不行,所以我尝试了另一种方式:
const result = []
orgs.map(org =>
f(org)
.then(res => result.push(res)))
// now result should be an array of res
console.log(result)
但是,这不起作用。
但我可以通过以下方式打印出结果:
orgs.map(org =>
f(org)
.then(res => console.log(res)))
关于这种行为如何发生的任何想法?
此外,我在一系列链接上使用find-rss
包
答案 0 :(得分:1)
您可以使用Promise.all()来聚合多个承诺的结果。 承诺是非常有用的是javascript。
var p1 = Promise.resolve(3);
var p2 = 1337;
var p3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'foo');
});
Promise.all([p1, p2, p3]).then(values => {
console.log(values); // [3, 1337, "foo"]
});
这是一个简单的例子,正如你所知,你的orgs map结果是一个promise数组,所以你可以使用Promise.all来得到你想要的东西