Javascript 不等待结果的异步任务
我有一个Node.js/Express应用程序,有时我需要执行一个不需要等待结果的非关键异步任务(例如,在分析平台中保存一些数据的调用):Javascript 不等待结果的异步任务,javascript,node.js,express,Javascript,Node.js,Express,我有一个Node.js/Express应用程序,有时我需要执行一个不需要等待结果的非关键异步任务(例如,在分析平台中保存一些数据的调用): router.post(“/”,函数(req,res,next){ 关键任务() 。然后(结果=>{ res.json({success:true}); 非关键任务(); }) .接住(下一个) }最后,我找不到任何关于这方面的文档。经过大量的实验和日志记录,似乎nonCriticalTask()没有终止,由节点执行,如果任务仍在执行或句柄正在使用,例如D
router.post(“/”,函数(req,res,next){
关键任务()
。然后(结果=>{
res.json({success:true});
非关键任务();
})
.接住(下一个)
}
最后,我找不到任何关于这方面的文档。经过大量的实验和日志记录,似乎nonCriticalTask()
没有终止,由节点执行,如果任务仍在执行或句柄正在使用,例如DB连接打开,则节点不会退出
所以它似乎对我的
nonCriticalTask()有效
进行分析。也就是说,依赖节点引擎在后台运行这样的关键任务可能是一种不好的设计实践,应该考虑其他方法,例如持久队列。如果在非关键任务()中发生任何异常/错误,是的,它将在中间终止。你必须处理它。但是你没有等待结果执行任何其他任务。如果代码里面有任何东西,非临界任务是异步的,你将有优势。我不确定你认为什么会终止它。你能详细说明为什么你认为它可能不是呼叫吗?特别是在我们的例子中,<代码>非关键任务涉及对外部服务发出HTTP POST请求,有时TCP会话在调用中间终止,而不发送完整的POST数据(如该外部服务提供者的日志,如果这是重要的话,则是ZAPIER)。。我们的服务器日志中没有任何错误迹象。一旦我们切换到等待非关键任务的结果,问题就消失了。因此,我正在尝试查找有关预期行为的文档。您好@Anton您找到答案了吗?我也有类似的问题