【问题标题】:Event emitter, object is not function事件发射器,对象不是函数
【发布时间】:2015-05-24 16:26:40
【问题描述】:

我在 node.js 中创建了一个事件,但是当我尝试触发事件并将参数传递给回调时,我得到了eventEmitter("dataIn", null, message); TypeError: object is not a function。查看类似的堆栈溢出问题,问题不是使用new 创建 eventEmitter,但我是。

首先我设置事件。

 var events = require('events').EventEmitter;
 var eventEmitter = new events();

然后我设置回调。

 function dataIn(config, callback) {
   if(typeof callback === 'function') {

     /* Set the callback for the dataIn event. */
     eventEmitter.on("dataIn", callback);

     /* More code below. */

最后,当我尝试发出事件时,我得到了类型错误。

var message = {
  "type": "REQUEST"
}

var rtrn = eventEmitter("dataIn", null, message);
if(rtrn === false) {
  console.log('Error triggering event');
}

【问题讨论】:

  • 我可能错了,但不应该是eventEmitter.emit("dataIn", message)触发事件吗?
  • 我也是这么想的,但它不起作用,然后我看到了这个答案stackoverflow.com/questions/30419064/… 然后它起作用了。我认为第一个参数是为错误保留的。
  • 嗯,是的,我的意思是 emit 部分,但如果你的回调是用通常的 Node 方式编写的,接受像 foo(error, response) 这样的参数,你必须将 null 作为错误传递还有
  • 我明白了,我错过了第一次阅读您的评论。
  • 谢谢 2trill2spill 你解决了我的问题,因为你说很多其他与 EventEmitter 问题相关的问题是他们没有用 new 实例化它。

标签: javascript node.js events event-handling


【解决方案1】:

EventEmitter 实例不是函数;你试图把它当作是。你需要调用.emit()方法:

eventEmitter.emit("dataIn", null, message);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 2013-02-28
    • 2015-12-13
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多