我简化它以更好地理解我需要什么:我必须做的任务是,我们有一个很长的未知nodejs进程(有很多排队的异步函数,我们永远不知道什么时候他们完成了或类似的东西),我们希望有一个更新过程,我们将当前进程状态存储在数据库中。为此,我们有一个启动(它存储“开始”)和一个在process.on('beforeExit', function() { ... });
之上的结束进程。现在我们必须处理客户要求的“仍在运行”流程。为此,我们希望每十分钟更新状态以使用时间戳运行(此功能已存在并被称为state.setRunningState()
NodeJs setInterval没有延长进程的生命周期
现在我遇到了问题,我该如何每10分钟触发一次该功能。在工作过程的每一个事件上触发这个函数,并比较它是否比10分钟前更老。问题是:有些时候没有任何事件的时间多了,所以第二个选项是setInterval()
,这里是我的问题:如果我使用setInterval,我的nodejs进程将永远不会结束,因此进程将无限运行直到间隔被清除。但是我也永远不知道什么时候应该调用clearInterval()
所以问题是:一种创建这种超时而不延长nodejs进程生命周期的方法。如果一切完成,它应该结束并忽略间隔的其余部分。
仅供参考,您可以通过退出过程'的过程。退出()' –
我知道,但这里没有答案,因为仍然是:我不知道,当主进程结束时。它完全是异步的,只有事件驱动。 Btw:process.exit()也跳过事件process.on(“beforeExit”) –
我已经读过这个问题3次,我仍然不明白你在问什么......“有没有办法创建这种超时而不延长nodejs进程的使用寿命“< - 那么,你不需要间隔?你有没有看过'setTimeOut'呢? “但我也永远不知道什么时候应该调用clearInterval()”< - 所以它是基于事件的,但是没有事件可以帮助您知道何时清除间隔?你希望其他人知道吗? – Josep