nodejs Worker_thread 与 Promise.all 或 allSettled()

nodejs Worker_thread vs Promise.all or allSettled()

我正在用 Express 开发 nodeJS 服务器。 众所周知,网络进程应该是异步处理的。 人们通常使用回调函数或 Promise(async/await).

来处理结果

在我的例子中,我需要向另一台服务器发送几十个请求来获取数据。 但我认为一个一个地请求这些是低效的。所以我发现 Promise.all() and Promise.allSettled() 异步处理多个工作并一次获得所有工作结果。 我还在nodeJS中找到了worker_thread,结果类似。

我不知道哪个是正确的,它们之间有什么区别。 有人帮我吗?

工作线程用于多线程cpu 密集型任务。 Promise.all 或 Promise.all 结算可能是您最好的选择。你选择哪一个取决于你想如何处理rejects/resolves。

这个人的回答可能会为您消除分歧:

由于节点是单线程的,因此工作线程旨在用于防止事件循环阻塞,这是一项耗时的长而复杂的计算任务。但是,他们不适合 I/O 密集型工作。

来自节点documentation

Workers (threads) are useful for performing CPU-intensive JavaScript operations. They will not help much with I/O-intensive work. Node.js’s built-in asynchronous I/O operations are more efficient than Workers can be.

所以我认为在这种情况下你应该使用 Promise.all/allSettled