在批量处理大量 Promise 时,我面临两种情况:
收集所有异步函数(当推送到集合时开始执行),然后发送到一个方法,该方法将批处理这些函数并执行
await Promise.allSettled(batch)
并整理每批结果!
收集对所有异步函数的引用,然后将它们发送到一个方法,该方法将批处理引用并执行
await Promise.allSettled(batch.map(fn => fn()))
并整理每批结果!
以上哪一项是批量处理 Promise 集合的正确方法?为什么?
我不完全确定哪个是正确的方法!
在这种情况下,没有明确的正确或错误的做事方式,这取决于具体的用例以及什么更有意义或更具可读性。 在其他支持
多线程的语言中,它可能会产生巨大的差异。您希望尽快开始每个流程,因为当您开始最后一个流程时,大多数流程可能已经完成。然而,在 Javascript 中,不会有可测量的差异,因为即使是异步的,你的 Promise 也不会与你的主线程并行运行。相反,它们将在主代码块终止后执行(对于 Javascript 和 NodeJS 都是如此)。 在性能或功能方面,您的选择基本相同,这取决于偏好以及最适合您的情况。