我想在React组件中执行以下操作:
const someArray = [/*stuff*/]
const results = []
someArray.forEach(async item => {
const result = await someAsyncFunction(item)
results.push(result)
})
我怎么知道所有结果何时返回然后做某事?
如果我在AngularJS中使用$ q,我可以
var results = []
someArray.forEach(function(item) {
var result = someAsyncFunctionThatReturnsAPromise(item);
results.push(result);
});
$q.all(results).then(function() {
// do something
});
答案 0 :(得分:5)
你做的完全相同,就好像它不是一个React组件:
Promise.all(someArray.map(someAsyncFunction)).then(results => {
// do stuff with results
});
当然,您也可以使用$q
所基于的q
。这取决于你。
答案 1 :(得分:0)
除了Felix的回答,在async
函数内,您还可以await
对Promise.all()
的结果进行const results = await Promise.all(someArray.map(someAsyncFunction));
,所以:
Link.find({}).exec((err, res) => {