>웹 프론트엔드 >JS 튜토리얼 >node.js 이벤트 및 이벤트 미터

node.js 이벤트 및 이벤트 미터

Christopher Nolan
Christopher Nolan원래의
2025-02-24 09:14:10748검색

Node.js Events and EventEmitter 이벤트와 같은 유용한 이벤트가 있지만 사용자 정의 이벤트를 만들고 트리거하는 것이 더 유용하지 않습니까? 이 기사는 이것을 달성하는 방법을 탐구합니다. 먼저, 우리는 일반 이벤트를 발행하는 방법을 보여줄 것입니다. 예를 들어, 누군가가 상점에 들어가면 종은 그 존재를 나타 내기 위해 울립니다. 이는 이벤트가 주제로 작용하고 이벤트에 첨부 된 모든 기능은 관찰자와 같습니다. 상점 예제는 다음과 같습니다.

먼저, node.js 코어 모듈 를로드합니다. 그런 다음 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 doorOpen 객체의 emit() 메소드를 사용하여 on의 생성자 메소드를 실행합니다. 그런 다음 메소드를 선언하여 "오픈"이벤트를 방출합니다. 이 코드 라인 : <pre class="brush:php;toolbar:false">&lt;code class=&quot;language-javascript&quot;&gt;const events = require('events'); const eventEmitter = new events.EventEmitter(); const ringBell = () =&gt; { console.log('ring ring ring'); }; eventEmitter.on('doorOpen', ringBell); eventEmitter.emit('doorOpen');&lt;/code&gt;</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의 eventemitter 클래스는 무엇입니까? 어떻게 작동합니까?

클래스는 객체 간의 통신을 용이하게하는 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 이벤트를 듣기 위해 인스턴스의

메소드를 사용할 수 있습니다. 이 메소드를 사용하면 이벤트 이름과 이벤트가 방출 될 때 호출 될 콜백 함수를 지정할 수 있습니다. 예는 다음과 같습니다.

이벤트 미터의 'on'과 'one leain'방법의 차이점은 무엇입니까?

메소드를 사용하면 이벤트가 방출 될 때마다 호출 될 콜백 함수를 추가 할 수 있습니다. 반면에 EventEmitter 메소드를 사용하면 이벤트가 처음으로 방출 될 때만 호출되는 콜백 함수를 추가 할 수 있습니다. events Eventemitter에서 이벤트 리스너를 제거하는 방법은 무엇입니까? 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 프로세스가 종료됩니다.

내 브라우저에서 Eventemitter를 사용할 수 있습니까?

는 node.js 모듈이며 주로 서버 측 응용 프로그램에 사용되지만 사용 가능한 브라우저 버전도 있습니다. 이것들은 node.js 버전처럼 사용할 수 있으므로 클라이언트 코드에서 동일한 이벤트 중심 아키텍처를 사용할 수 있습니다.

위 내용은 node.js 이벤트 및 이벤트 미터의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.