我想這樣做在一個陣營組成如下:如何等待多個異步等待中的請求作出反應
const someArray = [/*stuff*/]
const results = []
someArray.forEach(async item => {
const result = await someAsyncFunction(item)
results.push(result)
})
我怎麼能知道什麼時候所有的結果都返回,然後做一些事情?
如果我是用$ Q,在AngularJS,我可以做
var results = []
someArray.forEach(function(item) {
var result = someAsyncFunctionThatReturnsAPromise(item);
results.push(result);
});
$q.all(results).then(function() {
// do something
});
使用'Promise.all(/ *你的諾言陣列* /)。然後(...)'? – CRice
你讓你的代碼同步,所以不是保證操作的順序?這意味着如果你在forEach循環之後放置'console.log(results)',它將包含所有的值。這是異步/等待的美妙之處。 –
@ChaseDeAnda不幸的是,你不能使用forEach與異步/ await,但基本的循環將工作.. – Keith