스레드 : 하나의 작업이 실행되는 최소 단위
-자바스크립트, 노드는 싱글 스레드 언어
-자바를 비롯한 대부분의 백엔드 프로그래밍 언어는 멀티 스레드 언어
블로킹 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 |