2017-12-28 8 views
1

現在、クラスタとワーカー(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 

すると誰が私に少しヒントを与えることができる、または何だろうメッセージを扱うベストプラクティスですか?

おかげであなたがprocess.onの結果にbindを呼んでいる

+0

を私は同じエラーメッセージ "TypeError例外を:this._testは関数ではありません" だ、感謝:( – jimbo

答えて

1

を進めます。イベントハンドラのコールバックでbindに電話する必要があります。このように変更します。

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

または:

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

私のヒーロー:)に新しいイム!この言語 ;) – jimbo

関連する問題