我有一個Node應用程序正在執行一些異步事件,並且我不能冒險出現這種情況,因爲許多模塊中的一個模塊發生了一些不好的事情,所以應用程序永遠不會退出。 (這只是在發送日誌消息到服務時發生的。)在事件循環爲空或在超時後退出Node.js進程
我不能直接使用process.exit
,因爲無論有多少異步操作掛起,它都會終止。不過我想盡早退出,所以這不會做:
function exit() {
setTimeout(function() {
process.exit(1);
}, 10000);
}
因爲這會等待10秒,即使一切正常,所有異步事件1秒後結束。
我在考慮檢查事件循環是否爲空,除了這個定時器,然後退出。這可能可以通過undocumented process methods來完成,但我更喜歡避免那樣的黑幕。任何關於解決這個問題的更好方法的想法?
關於健壯編碼的好處,然而在這種情況下,問題是WebSocket連接無限期地保持打開,除非明確地關閉它,所以我沒有任何機會。 – ciscoheat
@ciscoheat - 爲什麼不直接在webSocket連接上實現一個超時,如果這就是你真正想要的? – jfriend00
這是私人的(在第三部分模塊中),我沒有訪問它並且不想破解它。 – ciscoheat