Node.js란?

heejung·2022년 5월 16일
0
post-custom-banner

Node.js는 자바스크립트를 어느 환경에서나 실행할 수 있게 해주는 실행기다.

Node.js의 특징

싱글 쓰레드이기 때문에 비동기 동작이 필요하고, 비동기 동작을 구현하기 위해 이벤트 기반으로 동작한다.

싱글 쓰레드

  • 쓰레드 : 명령을 실행하는 단위
  • 한 번에 한가지 동작만 수행
    • 장점 : 쓰레드가 늘어나지 않으므로 리소스 관리에 효율적
    • 단점 : 쓰레드 기반의 작업들의 효율이 떨어짐 (ex: CPU 연산 작업)

비동기

  • 동작 실행 후 완료되길 기다리지 않는 방식
  • 다른 동작 바로 실행 가능
  • 비동기 동작으로 싱글 쓰레드 기반의 작업을 최소화함


이벤트 기반

  • 비동기 동작의 완료를 처리하는 방법
  • 비동기로 실행한 특정 동작이 완료될 경우 실행할 함수를 미리 등록


비동기 코딩

비동기 - 이벤트 기반 동작을 코드로 구현하는 방법이다.

callback

  • db.getUsers => 데이터베이스에서 유저 목록을 찾아오는 비동기 동작 수행
  • 이벤트 등록 및 실행 => 쿼리 완료 후 오류가 있는지 or 유저 목록의 결과로 미리 등록된 콜백 함수를 실행
  • callback의 표준 : 에러와 결과를 같이 전달
db.getUsers((err, users) => {
	console.log(users);
});

Promise

  • Promise 함수 동작 완료 후 then에 등록된 callback 실행
    (오류 발생 시 catch에 등록된 callback 실행)
  • 체이닝으로 코드 간결화
db.getUsersPromise()
  .then((users) => {
  	return promise1(users);
  })
  .then(r1 => promise2(r1))
  .catch();

async-await

  • async 함수 내에서 promise 함수의 결과를 await 로 받을 수 있음
  • await 한 promise 함수가 완료될 때까지 다음 라인으로 넘어가지X
  • 순차적 프로그래밍처럼 작성 가능
  • async 함수의 return 결과는 Promise
async function doSomething() => {
  cosnt r1 = await promise1();
  const r2 = await promise2(r1);
  const r3 = await promise3(r1, r2);return r3;
});

doSomething().then(r3 => {
	console.log(r3)
});

=> 현대 JavaScript에서는 대부분 가독성이 좋은 async-await 사용을 지향하고 있다.

profile
프론트엔드 공부 기록
post-custom-banner

0개의 댓글