【问题标题】:node.js - How to “emitter.setMaxListeners()”?node.js - 如何“emitter.setMaxListeners()”?
【发布时间】:2012-08-22 12:24:27
【问题描述】:

我遇到了和这个问题类似的问题:

node.js - request - How to "emitter.setMaxListeners()"?

用户似乎已经解决了他们的问题,但我不确定他们是如何做到的。 ("process.setMaxListeners(0)"???) 什么是“进程”?

【问题讨论】:

标签: javascript node.js


【解决方案1】:

process 是全局进程。它是一个事件发射器。 node.js api 文档是这样说的:

进程对象是一个全局对象,可以从任何地方访问。它是 EventEmitter 的一个实例。 (http://nodejs.org/api/process.html)

您可以执行诸如设置全局事件侦听器、移除全局事件侦听器、发出全局事件之类的操作,几乎可以使用 EventEmitter 执行任何操作。

process.on("GlobalEvent", GlobalEventHandler);
process.emit("GlobalEvent");
do something. . .  .
process.removeListener("GlobalEvent", GlobalEventHandler);

我用它来将事件从一个模块发送到另一个我在同一整体进程下运行的模块。这让我可以将它们保存在漂亮的小功能模块中,但仍然能够相互发送事件。

【讨论】:

    【解决方案2】:

    我认为该问题上下文中的“过程”仅指某些 EventEmitter 类。事实上,如果你有一些 EventEmitter 对象并得到相同的错误,你应该在你的代码中添加这样的东西(在添加监听器之前):

    request.setMaxListeners(0); 
    

    这里可以是请求、进程或任何其他导致问题的对象。然而,有时这样的错误表明设计错误。如果您显示您的代码,将有可能给出更精确的建议。

    【讨论】:

      猜你喜欢
      • 2012-01-08
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 2011-11-27
      • 2016-09-17
      • 2015-04-05
      • 1970-01-01
      相关资源
      最近更新 更多