被这个惊呆了
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/