【问题标题】:NodeJS understanding the event queueNodeJS 理解事件队列
【发布时间】:2013-07-04 09:29:29
【问题描述】:

我的理解是NodeJS一直运行,直到所有的事件都从事件队列中排出,然后才会退出。在各种情况下,我编写了一个脚本,它使用第三方模块,它做我想做的事,但不退出。我认为这是因为其他一些第三方模块在事件队列中有一些东西。

我能做些什么来观察队列,鼓励它被排空,或者甚至确定谁还有事要做(也许获得足够的信息来知道如果我还是 process.exit,不会造成任何伤害)

感谢您的建议。

【问题讨论】:

  • "NodeJS 一直运行,直到所有事件都从事件队列中耗尽,然后它才会退出" - 真的吗?那么如果你使用 Node 建立一个网站,如果没有人访问它,它会自动关闭吗?也许我误解了你的问题。
  • 看看 process._getActiveHandles() 和 process._getActiveRequests() (groups.google.com/d/msg/nodejs/ztspFn-BKgE/qw1I9VLSG_gJ)
  • @PaulD.Waite 不会真正节省资源 ;-) 但说真的 - 如果您有一个指向“NodeJS 将/不会退出的情况”的链接,那将很有帮助。我在下面的答案中看到至少添加一个 SetInterval 会阻止应用程序停止。

标签: javascript node.js eventemitter


【解决方案1】:

如果无法访问这些模块,您将无能为力。

SetInterval 将阻止您的应用程序停止,但您可以在这些计时器上调用 ClearInterval。您的挑战将是管理这些间隔对象并在需要删除应用程序时执行清理。

一个简单而直接的解决方案是用定制的“替换” SetInterval 默认方法,该方法将注册间隔并从使用的角度来看与默认相同的方式。这样您就可以更轻松地收集所有区间句柄。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2013-04-19
    • 1970-01-01
    • 2018-09-18
    相关资源
    最近更新 更多