request
클래스의 인스턴스를 만듭니다 (나중에 확장 할 것입니다). 그 후, 우리는 함수를 변수로 넣어서이 방법으로 호출 할 수 있습니다. 콘솔에서 "링 링 링"을 인쇄합니다. 다음은 핵심 요점입니다. 우리는
<code class="language-javascript">const events = require('events'); const eventEmitter = new events.EventEmitter(); const ringBell = () => { console.log('ring ring ring'); }; eventEmitter.on('doorOpen', ringBell); eventEmitter.emit('doorOpen');</code>이벤트의 함수 목록에 추가됩니다. 첫 번째 매개 변수는 이벤트 이름이며 두 번째 매개 변수는 추가 될 함수입니다. 이것은 실제로 우리의 기능을 등록했습니다. 진정한 마법은 이벤트를 발행 할 때 다음 줄에서 발생합니다.
events
EventEmitter
ringBell
메소드에서 매개 변수를 전달하면됩니다. 이것은 매우 강력하지만 Node.js 커뮤니티에서는 일반적인 관행은 eventEmitter.on()
클래스에서 상속하는 것입니다. 이벤트를 방출 할 메소드가있는 클래스를 만들어이를 수행 할 수 있습니다. 이 코드를 참조하십시오 :
<code>ringBell
emit()
메소드를 사용하여 on
의 생성자 메소드를 실행합니다. 그런 다음 메소드를 선언하여 "오픈"이벤트를 방출합니다. 이 코드 라인 : <pre class="brush:php;toolbar:false"><code class="language-javascript">const events = require('events');
const eventEmitter = new events.EventEmitter();
const ringBell = () => {
console.log('ring ring ring');
};
eventEmitter.on('doorOpen', ringBell);
eventEmitter.emit('doorOpen');</code></pre>
<p> 모든 속성을 <code>EventEmitter
객체에 복사하십시오. 그런 다음 Door
를 만듭니다. 이는 갈색 색상의 frontDoor
의 인스턴스입니다. 그런 다음 이벤트 리스너를 추가하고 마침내 문을 열고 콘솔에 메시지를 인쇄합니다. 모든 사람들 이이 Door
모듈을 볼 수 있기를 바랍니다. 매우 강력하고 유용합니다! 마지막으로, events
모듈은 이벤트에 첨부 된 모든 이벤트 리스너를 나열하고 이벤트 리스너를 삭제하는 방법을 제공합니다. events
<code class="language-javascript">eventEmitter.on('doorOpen', ringBell); eventEmitter.on('doorOpen', doSomething); eventEmitter.on('doorOpen', doSomethingElse); eventEmitter.emit('doorOpen');</code>속성을 사용하여 달성 할 수 있습니다. 물론 이것은 익명 기능을 이벤트 리스너로 사용하지 않는 경우에만 작동합니다. 우리가 원한다면, 우리는 문에서 종을 제거 할 수 있습니다 :
listeners
<code class="language-javascript">eventEmitter.on('doorOpen', (ring) => { console.log(ring); }); eventEmitter.emit('doorOpen', 'ringeling');</code>
클래스는 객체 간의 통신을 용이하게하는 node.js의 핵심 모듈입니다. 사용자 정의 이벤트를 발행하고 처리하기위한
<code class="language-javascript">const events = require('events'); function Door(colour) { this.colour = colour; events.EventEmitter.call(this); this.open = () => { this.emit('open'); }; } Door.prototype.__proto__ = events.EventEmitter.prototype; const frontDoor = new Door('brown'); frontDoor.on('open', () => { console.log('ring ring ring'); }); frontDoor.open();</code>클래스는 이름이 이벤트에 함수 또는 이벤트 핸들러를 등록하여 작동합니다. 이벤트가
객체에 의해 방출되는 경우, 이벤트에 첨부 된 모든 기능을 동기식으로합니다.
EventEmitter
events
메소드를 사용할 수 있습니다. 이 메소드를 사용하면 이벤트 이름을 지정하고 여러 매개 변수를 이벤트 리스너에게 전달할 수 있습니다. 예는 다음과 같습니다. EventEmitter
EventEmitter
메소드를 사용하면 이벤트가 방출 될 때마다 호출 될 콜백 함수를 추가 할 수 있습니다. 반면에
에서 오류를 처리하고 처리 할 수 있습니다. 가 EventEmitter
메소드를 사용하면 이벤트가 처음으로 방출 될 때만 호출되는 콜백 함수를 추가 할 수 있습니다. events
new
이벤트 리스너를 제거하려면 인스턴스의 Door.prototype.__proto__ = events.EventEmitter.prototype;
또는 메소드를 사용할 수 있습니다. 이 메소드를 사용하면 제거 해야하는 이벤트 이름과 콜백 함수를 지정할 수 있습니다. 예는 다음과 같습니다.
<code class="language-javascript">const events = require('events');
const eventEmitter = new events.EventEmitter();
const ringBell = () => {
console.log('ring ring ring');
};
eventEmitter.on('doorOpen', ringBell);
eventEmitter.emit('doorOpen');</code>
메소드를 사용하여 이벤트에 대한 리스너 수를 제한 할 수 있습니다. 이 방법을 사용하면 이벤트에 추가 할 수있는 최대 수의 리스너 수를 지정할 수 있습니다. EventEmitter
setMaxListeners
인스턴스의
EventEmitter
이벤트에 대한 리스너를 적어도 등록하지 않고 listenerCount
이벤트가 방출되면 오류가 발생하고 스택 추적이 인쇄되고 Node.js 프로세스가 종료됩니다.
는 node.js 모듈이며 주로 서버 측 응용 프로그램에 사용되지만 사용 가능한 브라우저 버전도 있습니다. 이것들은 node.js 버전처럼 사용할 수 있으므로 클라이언트 코드에서 동일한 이벤트 중심 아키텍처를 사용할 수 있습니다.
위 내용은 node.js 이벤트 및 이벤트 미터의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!