프로필

프로필 사진
Popomon
Frontend Developer
(2020/12 ~)

    카테고리

    포스트

    [Node/Tutorial] Blocking / Non blocking 코드

    2020. 11. 9. 07:44

    꿈가게: To Do List - iOS

    꿈가게: To Do List - Android

    Callback 함수란?

    콜백은 함수의 비동기 방식입니다. 주어진 작업이 완료되면 콜백 함수가 호출됩니다. Node는 콜백을 많이 사용합니다. Node의 모든 API는 콜백을 지원하는 방식으로 작성됩니다.

     

    예를 들어, 파일을 읽는 함수는 파일을 읽기를 시작하고, 제어를 실행환경으로 되돌려 다음 명령을 실행할 수 있습니다. 파일 I/O가 완료되면 파일으리 내용인 콜백 함수를 매개변수로 전달하면서 콜백 함수를 호출합니다. 따라서 차단이 없거나 파일 I/O를 기다립니다. 따라서 Node.js는 함수가 결과를 반환할 때까지 기다리지 않고 많은 수의 요청을 처리할 수 있으므로 확장성이 뛰어납니다.

     

    예제를 통해서 좀 더 알아보겠습니다.

     


    Blocking 코드

    작업의 순서를 기다렸다가 처리하는 코드입니다. 다음과 같이, sample.txt 파일을 읽은 다음 파일에 대한 내용을 출력하고, 그 과정이 다 끝나면 프로그램이 끝났다고 출력됩니다.

     

    const fs = require("fs");
    const data = fs.readFileSync('sample.txt');
    
    console.log(data.toString());
    console.log("프로그램 종료");

     


    Non blocking 코드

    파일을 읽고나서 실행되는 콜백함수가 실행되는 작업이 한 세트로 묶인 형태입니다. 이 작업을 파일을 읽어 출력하는 작업1 이라고 명시하겠습니다. 작업 1은 Non blocking 코드이기 때문에 프로그램이 종료되었다고 출력하는 코드가 작업1의 실행과 동시에 진행됩니다.

     

    const fs = require("fs");
    
    fs.readFile('sample.txt', function (err, data) {
       if (err) return console.error(err);
       console.log(data.toString());
    });
    
    console.log("프로그램 종료");