2016-12-31 1 views
0

요청 객체에 리스너를 할당하는이 코드가 있으며 데이터가 올 때이 함수가 실행됩니다. 내 질문은, 어떻게 "청크"변수는 함수 호출에 대한 가치를지고있다? 이것은 요청 객체에 대한 암묵적인 할당입니까? JS에서 비슷한 패턴을 보았지만 실제로 어떻게 작동하는지 이해하지 못했습니다. 어떤 설명이 도움이 될 것입니다.NodeJs에서 전달 된 변수 request.on

request.on("data",function(chunk){ 
     response.write(chunk.toString().toUpperCase()) ; 
    }) 

답변

1

(요청 개체의 내부)는 요청 개체의 "data"emits 이벤트 코드는 이벤트 핸들러 청크 파라미터를 전달한다.

request.emit("data", chunk); 

즉, 다음에 "data" 이벤트에 등록 이벤트 처리기가 발생합니다 요청 객체가 eventEmitter에서 상속 때문에, 일부 데이터의 가용성을 발표하고자하는 요청 객체 내부의 코드는 다음과 같은 것을 수행 인수로 chunk과 함께 호출됩니다.

이것은 자바 스크립트의 모든 이벤트 처리기와 같습니다. 이벤트를 트리거하는 코드는 이벤트 핸들러에 대한 인수를 설정합니다. 여기에서 전달되는 것과 일치하는 인수를 갖는 이벤트 핸들러 함수를 선언해야합니다.

이것은 콜백 함수가 Javascript에서 작동하는 방식입니다. 콜백을 호출하는 시스템은 콜백이 전달 될 인수를 결정합니다. 그런 다음 콜백을 선언하여 해당 콜백을 호출 할 시스템에 등록합니다 (나중에 언젠가는). 이 경우 EventEmitter이므로 .on()으로 등록하십시오. 다른 경우에는 다른 방법으로 등록 할 수도 있습니다 (예 : .then() 또는 .catch()).

+0

이렇게 모두 설명되어 있습니다. 지금 모두 맑음 – OAH