如何正确批处理承诺集合?

问题描述 投票:0回答:1

在批量处理大量 Promise 时,我面临两种情况:

  1. 收集所有异步函数(当推送到集合时开始执行),然后发送到一个方法,该方法将批处理这些函数并执行

    await Promise.allSettled(batch)
    并整理每批结果!

  2. 收集对所有异步函数的引用,然后将它们发送到一个方法,该方法将批处理引用并执行

    await Promise.allSettled(batch.map(fn => fn()))
    并整理每批结果!

以上哪一项是批量处理 Promise 集合的正确方法?为什么?

我不完全确定哪个是正确的方法!

javascript node.js async-await scheduling promise.all
1个回答
0
投票

在这种情况下,没有明确的正确或错误的做事方式,这取决于具体的用例以及什么更有意义或更具可读性。 在其他支持

多线程

的语言中,它可能会产生巨大的差异。您希望尽快开始每个流程,因为当您开始最后一个流程时,大多数流程可能已经完成。然而,在 Javascript 中,不会有可测量的差异,因为即使是异步的,你的 Promise 也不会与你的主线程并行运行。相反,它们将在主代码块终止后执行(对于 Javascript 和 NodeJS 都是如此)。 在性能或功能方面,您的选择基本相同,这取决于偏好以及最适合您的情况。

© www.soinside.com 2019 - 2024. All rights reserved.