Promise.all / for等待并获取查询数组

时间:2019-05-21 19:45:36

标签: javascript es6-promise

我可以

array.push(fetch(`something`))

在Promise.all中执行/等待中,或

fetch(`something`)

在将其推入数组之前执行自身,而不在需要时在代码中进一步执行?


更多信息:

假设我需要使用多个查询来进行等待(如果我想一个接一个地执行它们)或Promise.all(如果我想一起异步执行它们)。

我创建一个查询数组:

let queries = []
let allResults = []

承诺:

tiersQueries.push(fetch(`something`))

他们像这样执行它:

for await (const oneResult of queries) {
 allResults.push(oneResult)
}

或者这个:

let results = await Promise.all(array)
allResults = results

1 个答案:

答案 0 :(得分:0)

许诺工作的方式,它们在创建时将立即开始执行,但是会存储其状态(已解决,已拒绝或未决),因此即使在完成后附加的.then.catch处理程序中,火。同样,Promise.all只是等待所有承诺都得到解决,在您通过.all之前,并不关心它们是否已解决。这意味着您可以很好地将所有提取推入数组,并使用Promise.all附加解析处理程序,以便在处理完成时(即使它们在.all运行之前完成)也可以处理所有处理结果)。