对于一些用户请求,我需要做一些繁重的计算(大约需要 100ms 的时间);当然,我不想在节点的主事件循环中执行这些操作,以免阻止其他请求提供服务。
解决此问题的最明显但绝对不是最干净的方法是将计算卸载到另一个程序并异步等待结果。
有没有办法在不离开节点进程(并实现进程间通信)的情况下做到这一点?例如这样的:
var compute = function (input) {
var i,
result = input;
for (i = 0; i < 1000000; i++) {
result = md5(result);
}
}
var controller = function (req, res) {
offload(compute, req.params.input, function(result) {
res.send(result);
});
}