很抱歉,如果这是一个基本问题。我刚刚开始进行Node.js编程的第3周!我环顾四周,没有看到答案,具体而言。也许只是在回答有关child_process.spawn/fork
的问题的时候才会假设那些比我更了解这些东西的人。
我有一个Node / Express应用程序,我想接收一个HTTP请求,将一些数据保存到Mongo,返回成功/错误,但是......同时启动一个进程以获取一些数据并对Web API进行查找。我想将这些数据保存回Mongo,但是没有必要将这些数据传回HTTP客户端。 (我可能会在某处记录该呼叫的成功/错误。)
如何启动第二项任务以独立于主要请求运行而不会导致响应等待它完成?
第二个任务也将用Node.js编写。如果可能的话,我希望它只是同一个文件中的另一个函数。
提前致谢!
答案 0 :(得分:2)
我不明白为什么你需要为此产生另一个过程。在节点中,您不限于http请求生命周期来运行其他框架之类的东西。这应该这样做:
function yourHandler(req, res, next) {
dataAccess.writeToMongo(someData, function(err, res) {
var status = err ? 500 : 200;
// write back to response already!
res.status(status);
res.end();
// do not completely terminate yet
// kick off web api call
apiClient.doSomething();
});
}