gpt4 book ai didi

node.js - 使用 Promise 使内存处理并发

转载 作者:太空宇宙 更新时间:2023-11-04 01:33:57 25 4
gpt4 key购买 nike

我们有一个项目,需要处理约 5,000 个对象,每个对象的处理时间为 200-500 毫秒。我团队中的一位开发人员建议使用 Promise 来尝试同时处理每个对象。所以基本上是这样的:

let result = await Promise.all(objects.map(o => process(o));

process() 代码可能如下所示:

async process(theObject) {
return new Promise(resolve => {
1 + 1 = 2;
resolve();
});
}

虽然它看起来像是一个公平的模式,但它似乎是一种反模式,或者是一种代码味道。 Node/V8 如何处理 Promise 似乎也有一些问题,这些问题可能会在以后引入重大问题。有人对这种模式有什么想法吗?它是否有用/没用?

最佳答案

使用 Promise.all() 的一个注意事项是它如何处理错误。来自 MDN :

It rejects with the reason of the first promise that rejects.

因此,如果约 5000 个对象的单个处理错误导致整个过程停止,那么这似乎是一个不错的工具。我建议设置一个队列,将处理与消息编排分开,并提供可扩展性优势。

关于node.js - 使用 Promise 使内存处理并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55150620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com