본문 바로가기

Node.js

Node.js 비동기 프로그래밍과 이벤트

반응형

우선 동기적 프로그래밍과 비동기적 프로그래밍의 차이를 알아보자. 

 

콘솔에 어떻게 출력되는지 보기 전에 본인이 예상한 출력 순서를 미리 예상해보고 밑에 사진을 보면 좋겠다. 

 

 

순서대로 잘 나왔다. 

 

그럼 이번엔 비동기적 프로그래밍을 한번 보겠다. 

 

 

딱 봐도 파일을 읽는 함수명부터 달라지긴 했지만 예상하듯이 출력되는 결과의 순서를 한번 예상해보고 결과를 보면

요로케 출력되어 있는 것을 볼 수 있다. 

 

여기서 '콜백' 이라는 개념이 나오게 되는데 쉽게 말해서 ~~가 끝나고 실행될 함수 라고 보면 되겠다. 

 

첫번째 코드와 달리 두번째 코드에선 3번째 인자로 콜백함수를 넣을 수 있는데 프로세스를 한번 살펴 보면 

 

 

우선 첫번째 코드

 

1.start 출력

2.fs.readFileSync 함수 실행(파일 읽기) 후 msg 상수에 저장 및 출력

3.finish 출력

 

즉 new 파일을 다 읽고 msg 에 담기 전까지 finish를 출력하는 함수에는 가지 못한다. 

 

반대로 2번쨰 코드

 

1. start 출력

2. fs.readFile 함수 실행  ( 실행(new 파일 읽기)하는 과정에서 일단 콜백함수 등록 ) 

3. finish 출력

4. new 파일을 다 읽었으니 등록해두었던 함수 실행

 

일단 특정 파일을 읽게 냅두고 뒤에 할 일이 있으면 그것부터 처리하게 하는 것이다. 

 

 

대략 무슨 차이인지 알았다면 이벤트 라는 것을 알아볼텐데 

 

이렇게 콜백함수를 통해 비동기 프로그래밍을 할 수 있지만 이벤트를 통해서도 가능하다. 

 

이벤트는 어떤 일이 발생했음을 알리는 신호 라고 보면 된다. 

예시 코드를 보면 

 

events 라는 코어모듈에서 EventEmitter 라는 클래스를 가져와서 우리가 사용해주기 위해 myEmitter 객체로 호출해준뒤에 devil 이라는 이벤트가 발생했을 때 실행 될 함수 를 정의해줌으로서 짜보았다. 

 

위의 코드와 비슷한 개념인게 파일을 다 읽게 되면 콜백함수 실행 이라는 것과 특정 이벤트가 발생했을때 콜백함수 실행 등 겹치는 내용이 있을 것이다. 

 

node.js 에서는 이 이벤트 개념을 이해하는 것이 중요한데 코어모듈에서 가져다 쓸 다양한 함수들이 이벤트 기반으로 이루어져 있기 때문이다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'Node.js' 카테고리의 다른 글

Cannot find module 'html'  (0) 2021.11.04
유용한 npm 명령어 (search, info, list,uninstall )  (0) 2021.10.07
Swagger 란?  (0) 2021.09.30
Handling Different Routes  (0) 2021.08.22
Nodejs Middleware 구현 하기 ( next() )  (0) 2021.08.22