gpt4 book ai didi

node.js - 如何在 node.js 中完成繁重的处理操作

转载 作者:搜寻专家 更新时间:2023-10-31 22:28:12 24 4
gpt4 key购买 nike

我有一个繁重的数据处理操作,我需要每 10-12 个模拟请求完成一次。我读过,对于更高级别的并发性,Node.js 是一个很好的平台,它通过非阻塞事件循环来实现。

我所知道的是,对于查询数据库之类的事情,我可以将一个事件派生到一个单独的进程(如 mongodmysqld),然后有一个回调将处理该过程的结果。很公平。

但是如果我想在回调中完成大量计算怎么办。在该回调中的代码完全执行之前,它不会阻止其他请求。例如,我想处理高分辨率图像,而我拥有的代码是 Javascript 本身(没有单独的进程来进行图像处理)。

我想实现的方式是这样的

get_image_from_db(image_id, callback(imageBitMap) {
heavy_operation(imageBitMap); // Can take 5 seconds.
});

heavy_operation 是否会阻止 Node 在这 5 秒内接收任何请求。或者我在想做这样的任务的错误方法。请指导,我是JS新手。

更新

或者我可以处理部分图像并让事件循环返回以接收其他回调并返回处理该部分图像。 (类似于确定事件的优先级)。

最佳答案

是的,它会阻塞它,因为回调函数是在主循环中执行的。只有异步调用的函数不会阻塞循环。据我了解,如果您希望图像处理异步执行,则必须使用单独的进程来完成。

请注意,您可以编写自己的异步过程来处理它。首先,您可以阅读 How to write asynchronous functions for Node.js 的答案。 .

更新

how do i create a non-blocking asynchronous function in node.js?也可能值得一读。这个问题实际上在我链接的另一个问题中被引用,但为了简单起见,我想我将它包含在这里。

关于node.js - 如何在 node.js 中完成繁重的处理操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15317464/

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