2017-12-28 1 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

을 내가 같은 오류 메시지가 "형식 오류를 : this._test는 함수가 아닙니다"가지고, 감사 :( – jimbo

답변

1

미리 감사합니다. 이벤트 처리기 콜백에서 bind으로 전화해야합니다. 이 그것을 변경 :

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

또는 :

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

나의 영웅 : 새로운 메신저! 이 언어 ;) – jimbo