[node.js] Event

BenKim·2020년 7월 5일
0

node환경에서도 js처럼 addEventlistener같은 이벤트를 등록해서 사용할 수 있다.
이벤트와 관련된 메소드 들이다.

사용방법을 예로 확인해 보자
이벤트 등록시 addEventListener와 on을 사용할수 있다. 짧아서 on을 쓰겠다.

1. 이벤트 등록하기

//procecc라는 객체에 관련된 문서를 보면 두개의 이벤트를 이용할 수 있다.
//exit과 uncaughtException이다.
//exit이벤트는 프로그램이 종료되는 경우 발생한다.
//uncaughtException은 코드 실행중 오류가 발생하는경우 이벤트가 발생한다.
process.on('exit', function() { 
  console.log('exit event call');
});

process.on('uncaughtException', function(error){
  console.log('exception error');
});

2. 이벤트 등록개수 조절하기

보통 on메소드를 이용하여 이벤트를 등록할 때 이벤트가 10개 이상이 되는경우 컴파일러가
실수라고 판단하여 에러메세지를 띄우고 종료시키게된다.
setMaxListeners 메소드를 사용해서 개수를 조절할 수 있다.

process.setMaxListeners(15);

무한대를 원한다면 0을 넣어주면 된다.

3. 이벤트 한번만 발생

once메소드를 이용해서 이벤트를 한번만 발생시킬수도 있다.

process.once('uncaughtException', function(error){
       console.log('exception error);
 });

4. 이벤트 강제발생

emit메소드를 이용해서 이벤트를 강제로 발생시킬수 있다.

process.on('uncaughtException', function(error){
       console.log('exception error);
 });
  
  process.emit('exit'); //실행됨

5. 이벤트 등록해서 사용하기

이벤트를 연결할 수 있는 모든 node.js의 객체들은 EventEmitter 객체를 상속받는다.
EventEmitter 객체를 생성하고 그 객체에 원하는 객체를 등록시킨후 사용할 수 있다.

//등록하기
export.timer = new process.EventEmitter();

//1초마다 반복되는 타이버
//time의 이벤트 tick을 1초마다 반복
setInterval(function(){
  export.timer.emit('tick');
}, 1000)


//사용하기
var rint = require('위에 이벤트를 만든js파일');
//tick이벤트를 등록
rint.timer.on('tick', function() {
  console.log('tick event call');
});

결과

profile
연습과 자신감

0개의 댓글