被这一个惊呆了
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时,它会被异步调用(在事件循环的下一个刻度中)。
答案 0 :(得分:0)
process.removeListener();
或一般
new EventEmitter().removeListener()
需要两个参数,而不是一个
根据文档
https://nodejs.org/api/events.html#events_event_removelistener