如何在React中等待多个异步等待请求

时间:2017-10-20 20:41:10

标签: javascript reactjs asynchronous promise

我想在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
});

2 个答案:

答案 0 :(得分:5)

你做的完全相同,就好像它不是一个React组件:

Promise.all(someArray.map(someAsyncFunction)).then(results => {
  // do stuff with results
});

当然,您也可以使用$q所基于的q。这取决于你。

答案 1 :(得分:0)

除了Felix的回答,在async函数内,您还可以awaitPromise.all()的结果进行const results = await Promise.all(someArray.map(someAsyncFunction)); ,所以:

Link.find({}).exec((err, res) => {