노드JS

skj1211·2022년 5월 3일
0

노드JS

싱글쓰레드-비동기-이벤트 기반

쓰레드란 명령을 실행하는 단위
장점 쓰레드가 늘어나지 않아 리소스 관리가 좋다.
단점 쓰레드 기반의 작업들의 효율이 떨어진다.

비동기란 동작을 실행하고 완료를 기다리지 않는다.
동작 완료를 기다리자 않아 다른 동작을 바로 실행 가능

이벤트 기반
비동기 동작의 완료를 처리하는 방법

싱글쓰레드 이기때문에 비동기 동작이 필요 -> 비동기 동작을 구현하기 위해 이벤트 기반이다.

ES6

ECMAscript : 자바스크립트 표준 문법

ES6사용이유
현대적인 자바스크립트 문법임
현대적인 문법은 생산성 향상에 도움이 된다.

비동기 코딩

노드js에서 세가지 방법이 있음

callback : 전통적인 자바스크립트 이벤트 기반 코딩방식

Promise : 콜백의 단점을 보완한 비동기 코딩방식
프로미스의 실행이 완료되면 then에 등록된 콜백을 실행
오류가 발생하면 catch에 등록된 콜백을 실행
Chaining을 사용해 코드를 간결하게 코딩 가능

Promise는 resolve, reject 두가지 함수를 가진다.
reject는 catch에 등록된 콜백을 실행
resolve는 then에 등록된 콜백을 실행

Async - Await : 프로미스의 단점을 보완한 비동기 코딩방식(제일 최근)
내부적으로 프로미스를 사용한다.

Async로 선언된 함수내에서 프로미스의 결과를 Await으로 받는다
이때, await한 promise 함수가 완료될 때 까지 다음 라인으로 넘어가지 않는다.
->순차적 프로그래밍처럼 작성이 가능해진다.

async함수의 return값은 Promise이다.

이벤트 루프

이벤트를 처리하는 반복되는 동작

이벤트 루프 구성요소
call stack : 작성된 함수들이 등록되는 LIFO 스택
이벤트루프는 콜스택이 비어있을 때까지 스택의 함수를 실행

message queue : setTimeout 같은 지연실행 함수를 등록하는 FIFO큐
정해진 timing이 끝나고 콜스택이 비어있을 경우 등록된 함수를 콜스택에 추가한다.

job queue : Promise에 등록 된 콜백을 등록하는 FIFO큐
사우이 함수가 종료되기 전에 콜스택이 비어있지 않더라도 잡큐에 등록된 콜스택에 추가

0개의 댓글