-
4-2 이벤트 이해하기back-end/nodejs 2019. 7. 15. 08:10
- node는 이벤트 기반의 비동기 방식으로 처리된다.
- 이러한 이벤트를 보내고 받을 수 있도록 EventEmitter라는 것이 만들어져 있다.
이벤트 보내고 받기
1) EventEmitter를 상속받는다.
2) 이벤트 받기 : on() 메서드로 이벤트가 전달될 객체에 이벤트 리스너 역할
3) 이벤트 보내기 : emit() 메소드로 이벤트를 다른 쪽으로 전달.
var util = require('util'); var EventEmitter = require('events').EventEmitter; var csfroka = function (){ this.on('start', function(){ console.log('csforka 실행'); }) this.on('end', function(){ console.log('csforka 종료'); }) } util.inherits(csfroka, EventEmitter); var game = new csfroka('csfroka',20); game.emit('start'); game.emit('end');
util.inherit(csfroka, EventEmitter)가 EventEmitter를 상속받아
on(), emit() 메서드를 사용 할 수 있게 된다.여기서 EventEmitter를 상속받지 않고 이벤트를 등록해본 적이 있다며 코드를 가져왔다.
process.on('stop', function(){ console.log('stop 이벤트 발생'); }) process.emit(stop);
위 코드에서 눈을 씻고 찾아봐도 eventEmitter를 상속한 코드를 볼 수 없다.
process객체는 어떻게 on(), emit() 메서드를 사용할 수 있는가?
process객체는 일반적인 전역객체로 EventEmitter를 상속받아 사용되고 있는 전역 객체이다.
따라서 굳이 EventEmitter를 상속받지 않아도 on(), emit() 메서드를 사용할 수 있었다.
* node js는 event 기반의 비동기 방식으로 처리된다 하니 100% 이해하고 넘어가자
728x90'back-end > nodejs' 카테고리의 다른 글
npm ? npx? (0) 2021.09.10 [Node] 회원가입, 로그인, 로그아웃 구현하기 (0) 2019.12.26 4-3 파일 다루기 (0) 2019.07.15 javascript 함수 선언하기 (0) 2019.07.14 3.4 프로토타입 객체 (0) 2019.07.13