首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套promise.all

嵌套promise.all
EN

Stack Overflow用户
提问于 2020-09-06 20:46:01
回答 2查看 307关注 0票数 0

我正在努力改进一些性能问题,为此,我尝试做以下工作

我有一个承诺数组,在承诺数组完成所有承诺之后,我想返回结果。

顺便说一句,processA、processB和processC的结果也很重要,因为在//其他逻辑中,我在某个地方使用了它们。

代码语言:javascript
复制
const promiseResults = await Promise.all(promises);

 const [processA, processB, processC] = await Promise.all([
      asyncProcessForA(),
      asyncProcessForB(),
      asyncProcessForC(),
 ]);



 // other logic 
 // ....
 // ....


 return promiseResults;

所以,我想在promiseResults中添加promise.all,就像

代码语言:javascript
复制
const [promiseResults, processA, processB, processC] = await Promise.all([
      Promise.all(promises),
      asyncProcessForA(),
      asyncProcessForB(),
      asyncProcessForC(),
 ]);


 // other logic 
 // ....
 // ....


 return promiseResults;

那么,我的方式是好还是坏,同时也使用嵌套promise.all是一个好的或不?因为我搜索了一些使用嵌套promise.all的最佳实践,但是我找不到任何这样的东西,那么您提供什么呢?

EN

回答 2

Stack Overflow用户

发布于 2020-09-07 03:34:51

使用嵌套的Promise.all(),如第二个示例所示:

代码语言:javascript
复制
const [promiseResults, processA, processB, processC] = await Promise.all([
      Promise.all(promises),
      asyncProcessForA(),
      asyncProcessForB(),
      asyncProcessForC(),
]);

效果很好。Promise.all()期望得到一系列的承诺。因为Promise.all()返回一个承诺,所以在另一个对Promise.all()的调用中使用它的诺言是非常好的。这里的一个优点是,您的外部Promise.all()将解析为一个数组,其中包含一个嵌入的数组,如下所示:

代码语言:javascript
复制
[[v1, v2, v3], valueA, valueB, valueC]

其中[v1, v2, v3]是内部Promise.all()的解析结果(传递到外部Promise.all()andvalueA、valueB、valueCare the resolved results from the other promises passed to the outerPromise.all()‘)。所以,只要你为这样的结果做好准备,你当然可以这样做。

您还可以将结果扁平化,并执行如下操作:

代码语言:javascript
复制
const [processA, processB, processC, ...promiseResults] = await Promise.all([
      asyncProcessForA(),
      asyncProcessForB(),
      asyncProcessForC(),
      ...promiseResults
]);

然后,这将给您一个组合的和平面的结果数组,然后您可以分配出或访问任何您想要的结果。所以,这真的取决于你想要怎样组织结果。

票数 2
EN

Stack Overflow用户

发布于 2020-09-06 21:13:09

我没有使用过这样的结构,但是如果您不喜欢它,您可以将您的promise.all封装在另一个承诺中,所以它不会是嵌套的所有。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63768748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档