监听器必须是一个功能

时间:2016-05-18 07:31:54

标签: javascript node.js

被这一个惊呆了

    var integrantMessage = function (msg) {
      if (msg.info === 'integrant-ready') {
        integrantsFromParentProcess.push(msg.data);
          if (sumanUtils.checkForEquality(integrants, integrantsFromParentProcess)) {
            process.removeListener(integrantMessage);
            integrantsReady = true;
            cb(null);
          }
        }
        else if (msg.info === 'integrant-error') {
          process.removeListener(integrantMessage);
          cb([msg.data]);
        }
    };

    process.on('message', integrantMessage);
    process.send({type: constants.runner_message_type.INTEGRANT_INFO, msg: integrants});

在process.removeListener()行上,我收到错误:

TypeError: listener must be a function
            at process.removeListener (events.js:276:15)

任何人都知道为什么会这样?我查了一下它实际上是一个功能,不知道这里发生了什么。函数声明也会产生相同的错误。

我可以保证,当调用integrantMessage时,它会被异步调用(在事件循环的下一个刻度中)。

1 个答案:

答案 0 :(得分:0)

process.removeListener();

或一般

new EventEmitter().removeListener()

需要两个参数,而不是一个

根据文档

https://nodejs.org/api/events.html#events_event_removelistener