White Whale Studio

[Node.js] Events 본문

IT Engineering/MEAN Stack

[Node.js] Events

glorymind 2018. 8. 30. 16:57
반응형


Node.js의 이벤트에 대해서 알아봅니다.


소개 글에 보면 Event-driven application 이라고 하는데

이 Event-driven의 의미는 무엇일까요?

가장 쉽게 접근하자면 마우스 또는 키보드와 같이 입력이 있으면 이벤트가 발생하는 경우를 예로들수 있겠습니다.

키보드 Enter키를 누르면 입력 Esc키를 누르면 취소 기능을 하는 것처럼

각각의 이벤트에 반응하여 동작을 변경하는 방식을 Event-Driven이라고 한다고 하네요.


Node.js의 오브젝트들은 이벤트를 발생시킵니다. 예를 들어 파일을 열거나 닫을때 이벤트를 발생시킵니다.


이벤트와 관련된 이벤트 모듈도 있습니다.

var events = require('events'); 와 같이 사용합니다.

이벤트를 생성, 발생, 또는 이벤트가 발생되는 것을 감지하기위한 listen을 위해 사용합니다.

추가적으로 모든 이벤트 Property와 Method 들은 EventEmitter 객체의 instance라고 합니다. 이러한 이벤트 Property와 Method 들에

접근해서 사용하려면 EventEmitter 를 선언후 사용해야한다고 하네요.

emit이 뭘 의미하는 건지 궁금해서 찾아보니 발하다, 내다, 방출하다, 내뿜다 등의 의미가 있습니다.

굳이 해석하자면 이벤트발생자... 정도가 되겠네요.


그럼 EventEmitter의 사용법을 한번 실습해보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
var events = require('events');
var eventEmitter = new events.EventEmitter();
 
//Create an event handler:
var myEventHandler = function () {
  console.log('I hear a scream!');
}
 
//Assign the eventhandler to an event:
eventEmitter.on('scream', myEventHandler);
 
//Fire the 'scream' event:
eventEmitter.emit('scream');
cs


커맨드 창에 실행하면 그저 I hear a scream! 만 뜨기 때문에

동작원리를 잘 알수 없습니다.

소스를 한번 보면 events와 eventEmitter를 선언하고, 추가로 myEventHandler라는 function로 선언합니다.

이 function은 호출되면 I hear a scream!을 출력해주겠네요.

10번째 라인에 보면 이 myEventHandler에 이벤트를 할당하는 것을 볼수 있습니다.

즉,

 'scream' 이라는 이벤트가 들어오면 myEventHandler 너가 일해! 라는 뜻이겠죠.


마지막 13번째 줄에서는 이벤트를 발사/발생시킵니다.

꺄악 'scream' 이벤트를 발생시켰으니 말잘듣는 myEventHandler가 알아채고는

오 마이갓! 비명소리를 들었어요..! 라며 커맨드 라인에 출력해주는 순서입니다.






반응형

'IT Engineering > MEAN Stack' 카테고리의 다른 글

[Node.js] Sqlite3  (0) 2018.09.07
[Node.js] Upload Files  (0) 2018.08.31
[Node.js] NPM : Node Package Manager  (0) 2018.08.30
[Node.js] URL Module  (0) 2018.08.30
[Node.js] File System Module  (0) 2018.08.30
Comments