我正在尝试使用cluster和worker(child_process)。 我试图将我的类绑定到“process.on”函数,但它不起作用...
var coresCount = require('os').cpus().length;
var exec = require('child_process').exec;
var cluster = require('cluster');
class Listen extends Command {
async trigger (args, options) {
if (cluster.isMaster) {
for (var i = 0; i < coresCount; i++) {
cluster.fork();
}
} else {
process.on('message', function(msg) {
this._test()
}).bind(this);
}
}
_test() {
console.log('test')
}
}
module.exports = Listen
错误讯息:
TypeError: this._test is not a function
任何人都可以给我一点提示,或者使用这些消息的最佳做法是什么?
谢谢你提前
答案 0 :(得分:1)
您在bind
的结果上致电process.on
。您应该在事件处理程序回调上调用bind
。将其更改为:
process.on('message', function(msg) {
this._test()
}.bind(this));
或者:
process.on('message', msg => {
this._test()
});