node환경에서도 js처럼 addEventlistener같은 이벤트를 등록해서 사용할 수 있다.
이벤트와 관련된 메소드 들이다.
사용방법을 예로 확인해 보자
이벤트 등록시 addEventListener와 on을 사용할수 있다. 짧아서 on을 쓰겠다.
//procecc라는 객체에 관련된 문서를 보면 두개의 이벤트를 이용할 수 있다.
//exit과 uncaughtException이다.
//exit이벤트는 프로그램이 종료되는 경우 발생한다.
//uncaughtException은 코드 실행중 오류가 발생하는경우 이벤트가 발생한다.
process.on('exit', function() {
console.log('exit event call');
});
process.on('uncaughtException', function(error){
console.log('exception error');
});
보통 on메소드를 이용하여 이벤트를 등록할 때 이벤트가 10개 이상이 되는경우 컴파일러가
실수라고 판단하여 에러메세지를 띄우고 종료시키게된다.
setMaxListeners 메소드를 사용해서 개수를 조절할 수 있다.
process.setMaxListeners(15);
무한대를 원한다면 0을 넣어주면 된다.
once메소드를 이용해서 이벤트를 한번만 발생시킬수도 있다.
process.once('uncaughtException', function(error){
console.log('exception error);
});
emit메소드를 이용해서 이벤트를 강제로 발생시킬수 있다.
process.on('uncaughtException', function(error){
console.log('exception error);
});
process.emit('exit'); //실행됨
이벤트를 연결할 수 있는 모든 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');
});
결과