2013-07-04 39 views
2

我的理解是,運行的NodeJS直到所有事件從事件隊列倒掉,然後它會退出。在各種情況下,我寫了一個腳本,使用第三方模塊,它做我想要它做的事情,但不會退出。我認爲這是因爲一些其他第三方模塊在事件隊列中有某些東西。理解的NodeJS事件隊列

我能做些什麼來觀察排隊,鼓勵排隊,甚至確定誰還有事情要做(也許得到足夠的信息知道如果我處理。退出,無論如何,沒有傷害將是完成)

感謝您的建議。

+1

「運行的NodeJS,直到所有的事件從事件隊列倒掉,然後將退出」 - 真的嗎?所以,如果你使用Node構建一個網站,如果沒有人訪問它,它會自動關閉?也許我誤解了你的問題。 –

+0

看看process._getActiveHandles()和process._getActiveRequests()(https://groups.google.com/d/msg/nodejs/ztspFn-BKgE/qw1I9VLSG_gJ) –

+0

@ PaulD.Waite,這將真正節省資源wouldn 't ;-)但嚴重的是 - 如果你有一個「NodeJS將會/不會退出的情況」的鏈接,那會很有幫助。我在下面的答案中看到,至少添加一個SetInterval將阻止應用程序停止。 – nwaltham

回答

1

沒有訪問這些模塊,你可以做的不多。

的setInterval會阻止你停止的應用程序,但你可以調用clearInterval這些定時器。您的挑戰將是管理這些間隔對象,並在需要移除應用程序時執行清理。

一個哈克和直線前進溶液。將「替換」有定製的setInterval默認方法,將登記間隔和行爲方式如從圖使用點默認相同。那樣你就可以更容易地收集所有間隔句柄。