2012-11-06 2 views
1

일부 코드를 실행하기 위해 node.js에서 이벤트를 사용하고 싶습니다. 내 질문은, 호출 된 이벤트 코드의 범위는 무엇입니까? 특히, 이벤트 호출자의 범위를 공유합니까? 아니면 "격리되어 있습니까?" 나는 비슷한 효과를 얻기 위해 이벤트에서 호출 된 코드에 매개 변수를 전달할 수 있지만 이상적으로는 호출 할 수있는 범위를 사용하고 싶습니다.Node.js 이벤트 범위?

+0

예가 있습니까? – Neal

답변

1

는, 노드 이벤트 시스템에 의해 후에 처리하기 위해 큐에 넣어. 이벤트가 발행되는 범위의 모든 변수는 인수로 emit에 전달되어야합니다. 노드가 해당 이벤트를 가져와 바인딩 된 모든 콜백을 트리거하면 별개의 "깨끗한"범위와 고유 한 "깨끗한"스택 모두에서 발생합니다. (사이드 노트에서, 이것은 노드의 스택 트레이스가 디버깅을 방해 할 수있는 이유입니다).

var events = require('events'); 

var myEmitter = new events.EventEmitter(); 

function closure1(word, number) { 
    function closure2(animal, vegetable) { 
    myEmitter.emit('hey', word, number, animal, vegetable, 43); 
    } 
    closure2("horse", "carrot"); 
} 

myEmitter.on('hey', function (word, number, animal, vegetable, anotherNumber) { 
    console.log('hey event fired with', word, number, animal, vegetable, anotherNumber); 
}); 
closure1("table", 42); 

당신이 그것을 실행하면, "이봐, 테이블 42 말 당근 43로 해고당한 사건"이 인쇄 될거야.

see the node.js docs on emitter.emit(event, [arg1], [arg2], [...]

관련 문제