javascript - 监听器必须是一个函数

标签 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时,它是异步调用的(在事件循环的下一个tick中)。

最佳答案

process.removeListener();

或者一般

new EventEmitter().removeListener()

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

根据文档

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

关于javascript - 监听器必须是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37292982/

相关文章:

javascript - 可拖动元素被放到哪里了?

javascript - Bootstrap 汉堡菜单显示在小屏幕上,但第二次单击时不会折叠回来

javascript - React 不在客户端代码中插入跨度?

node.js - 使用requirejs优化器时是否可以配置html文件中的内容?

javascript - 为什么这个二维数组在不应该的情况下推送值?

javascript - 数据键函数过滤器始终返回第一个元素

javascript - 在 Node.js 中运行浏览器 JS

javascript - nodejs无法用momentjs解析日期

validation - Mongoose 验证竞争条件?

javascript - 将 Electron 打包到现有 App 中