我簡化它以更好地理解我需要什麼:我必須做的任務是,我們有一個很長的未知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