【发布时间】:2013-02-25 09:11:14
【问题描述】:
我有一个繁重的数据处理操作,我需要每 10-12 个模拟请求完成一次。我已经读到,对于更高级别的并发,Node.js 是一个很好的平台,它通过非阻塞事件循环来实现。
我所知道的是,对于查询数据库之类的事情,我可以将一个事件生成到一个单独的进程(如mongod、mysqld),然后有一个回调来处理该进程的结果。很公平。
但是,如果我想在回调中完成大量计算,该怎么办。在该回调中的代码完全执行之前,它不会阻止其他请求。例如,我想处理高分辨率图像,而我拥有的代码在 Javascript 本身中(no separate 进行图像处理的进程)。
我认为实现的方式是这样的
get_image_from_db(image_id, callback(imageBitMap) {
heavy_operation(imageBitMap); // Can take 5 seconds.
});
heavy_operation 是否会阻止节点在这 5 秒内接收任何请求。还是我在想错误的方式来完成这项任务。请指导,我是JS新手。
更新
或者我可以处理部分图像并让事件循环返回以接收其他回调并返回处理该部分图像。 (类似于优先事件)。
【问题讨论】: