Elice SW engineer - TIL day 21

Circlewee·2022년 5월 2일
0

Elice SW 2 TIL

목록 보기
18/31

비동기만이 콜백을 쓰는 것은 아님. 동기도 콜백을 사용할 수 있기 때문에 명세를 확인해야함
직접 작성한 함수는 비동기 처리가 없다면 event loop의 동작을 막는다.

1. Node.js

  • Chromium 프로젝트의 V8엔진을 활용해서 만든 server-side JS runtime
  • V8엔진, libuv(event loop), Node bindings로 이루어짐
  • 다른 runtime과 다르게 비동기 실행방식(event loop와 OS커널에서 지원하는 low-level IO API를 활용)을 기본적으로 지원하여 IO관련 작업 시 최고의 성능을 보여줌
  • 브라우저가 아닌 머신 환경에서 실행되기 때문에 브라우저의 Web API와는 다른 라이브러리들이 포함됨(fs, path, crypto, Stream, zlib 등)

1.1 기본 생태계

1.1.1 패키지 매니저

  • node.js 프로젝트의 의존성 관리, 테스크 작성, npm registry배포, 프로젝트에 관련된 메타데이터 작성 등을 담당
  • 서드 파티 라이브러리/모듈을 npm registry로부터 다운 받아서 개발중인 프로젝트에서 사용할 수 있도록 해주거나 개발한 라이브러리/모듈을 업로드 할 수 있다.
  • package.json이라는 프로젝트 명세 파일에 따라 기능을 수행함
npm init # node 프로젝트를 시작하겠다는 뜻

1.1.2 NPM registry

  • Node.js/Vanila JS로 작성한 서드 파티 라이브러리/모듈을 업로드하는 공간
  • Public registry는 누구나 접근 가능한 공간, Private registry는 제한된 공간
    개발자들은 registry로부터 필요한 서드 파티 라이브러리/모듈을 받아 본인 코드에서 사용할 수 있다.

2. 자바스크립트 실행 환경

  1. 자바스크립트 엔진
    • 자바스크립트 코드를 읽어서 해석하고 작업을 수행하는 역할
    • 엔진은 작업을 수행만 할 뿐 비동기/동기와는 관계가 없음
  2. 비동기 흐름
    1) 먼저 외부API를 호출해 비동기 작업을 수행한다.
    2) 비동기 작업이 완료되면 개발자가 넘겨준 콜백 함수를 큐에 등록한다.
    3) event loop가 큐에서 콜백 함수를 꺼내 call stack에 넘겨준다
  • 여기서 알 수 있는 점은 비동기 작업의 결과를 콜백 함수를 통해 처리한다는 것이다. 다만 비동기만 콜백 함수를 사용하는 것은 아니기 때문에 콜백 함수 사용 => 비동기 함수라고 단정지어서는 안된다.
  1. 콜백 지옥
  • 콜백 지옥에서 벗어나고 promise chaining에서 벗어나게 해준 것이 async, await이다.
profile
공부할 게 너무 많아요

0개의 댓글

관련 채용 정보