본문 바로가기
Do it Node.js/EJS BackEnd

9. Node 비동기 처리

by 갱생angel 2024. 3. 1.

스레드 : 하나의 작업이 실행되는 최소 단위

  -자바스크립트, 노드는 싱글 스레드 언어

  -자바를 비롯한 대부분의 백엔드 프로그래밍 언어는 멀티 스레드 언어

 

블로킹 I/O : 코드 실행을 중간에 막는 것으로, 동기 처리 했을 시 발생

논블로킹 I/O : 비동기 처리를 했을 시 코드 실행이 중간에 막힘 없이 처리하는 것

  -I/O : Input(입력) / Output(출력)을 나타냄

 

이벤트 루프 : 비동기 처리 작업을 콜백 큐에 저장했다가 콜 스택이 비면 하나씩 꺼내 처리하는 방식

  - : 바로 실행하려는 함수들

  -콜 스택 : 콜이 스택 형식으로 모여 있는 것, 비동기 처리는 할 수 없음

  -콜백 큐 : 콜백 함수가 큐 형태로 저장되는 공간, 비동기 처리를 실행

libuv : V8 엔진에서 비동기 처리를 할 수 있는 라이브러리, Node API 와 콜백 큐로 구성

 

ch05 - <callback.js> : 콜백 함수를 이용해서 readdir 비동기 처리

const fs = require("fs");

fs.readdir("./", (err, files) => {
  if (err) {
    console.error(err);
  } else {
    console.log(files);
  }
});

console.log("Code is done");
>> node callback

 

ch05 - <promise.js> : 프라미스를 이용해서 readdir 비동기 처리

const fs = require("fs").promises; //프라미스 적용

fs.readdir("./")
  .then((files) => console.log(files))
  .catch((err) => console.error(err));
>> node promise

 

ch05 - <await.js> : async / await를 이용해서 readdir 비동기 처리

try ~ catch 문 : try 블록에서 실행할 명령을 지정, catch 블록에서 발생한 예외 처리를 지정

const fs = require("fs").promises; //프라미스 적용

async function readDir() {
  try { //실행할 코드
    const files = await fs.readdir("./");
    console.log(files);
  } catch { //예외 발생
    console.error(err);
  }
}

readDir();
>> node await

'Do it Node.js > EJS BackEnd' 카테고리의 다른 글

11. 미들웨어  (0) 2024.03.06
10. Express  (0) 2024.03.03
8. 라우팅  (0) 2024.03.01
7. HTTP 모듈  (0) 2024.02.29
6. 버퍼, 스트림, 파이프  (0) 2024.02.28