我有一个Node.js / Express应用程序,有时我需要执行一个不需要等待结果的非关键异步任务(例如,调用在分析平台中保存一些数据):
router.post("/", function (req, res, next) {
criticalTask()
.then(result => {
res.json({success: true});
nonCriticalTask();
})
.catch(next)
}
是否可以保证nonCriticalTask()
完全执行而不会在中间终止它?对此有任何限制吗?
答案 0 :(得分:0)
最后我找不到任何关于此的文件。经过大量的实验和记录后,似乎nonCriticalTask()
没有终止并由节点执行,如果仍在执行任务或正在使用句柄,则节点不会退出,例如数据库连接已打开。
所以它似乎适用于我的nonCriticalTask()
进行分析。话虽如此,依赖于节点引擎来处理在后台运行的任何关键事件可能是一个糟糕的设计实践,并且应该考虑其他方法,例如,持久性队列。