2012-08-28 28 views
1

我有一個類似的問題,在這個問題:node.js - 如何「emitter.setMaxListeners()」?

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

用戶似乎已經解決了他們的問題,但我不知道他們是怎麼做到的。 (「process.setMaxListeners(0)」???)什麼是「進程」?

+3

閱讀節點文檔。 [process](http://nodejs.org/api/process.html#process_process),[EventEmitter](http://nodejs.org/api/events.html#events_class_events_eventemitter) – timidboy

回答

2

我想在這個問題的上下文中的'進程'只是指一些EventEmitter類。事實上,如果你有一些對象,它是EventEmitter,並得到了同樣的錯誤,你應該添加到您的代碼是這樣的(之前加入聽衆):

request.setMaxListeners(0); 

這裏可以申請,過程或任何其他對象導致問題。但是,有時候這樣的錯誤會指示設計錯誤。如果您顯示您的代碼,則可以提供更精確的建議。

0

過程是全球化的過程。它是一個EventEmitter。 node.js API文檔說:

過程對象是一個全局對象,可以從任何地方訪問。它是EventEmitter的一個實例。 (http://nodejs.org/api/process.html

您可以執行諸如設置全局事件偵聽器,刪除全局事件偵聽器,發出全局事件等事情,幾乎可以使用EventEmitter執行任何操作。

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

我用它從一個模塊發射事件到另一個模塊,我在相同的整體過程中運行。這使我能夠將它們放在漂亮的小功能模塊中,但仍然能夠將事件發送給另一個。