在集群消息上触发类功能

时间:2017-12-28 17:21:25

标签: javascript node.js worker

我正在尝试使用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

任何人都可以给我一点提示,或者使用这些消息的最佳做法是什么?

谢谢你提前

1 个答案:

答案 0 :(得分:1)

您在bind的结果上致电process.on。您应该在事件处理程序回调上调用bind。将其更改为:

process.on('message', function(msg) {
    this._test()
}.bind(this));

或者:

process.on('message', msg => {
    this._test()
});