<TIL>Node.js 입문 (1)

sh.j225·2023년 6월 12일
0

<2023.6.12>

01. Javascript

1) 동기(Sync) & 비동기(Async)

(1) 동기 (Synchronous)

-> 먼저 실행된 코드의 결과가 나올때까지 대기하는 것을 말함.

  • 지금 진행하는 작업이 끝이나면 다른 작업으로 넘어가고 그 작업이 끝이 나면 다른 작업으로 넘어가는 방식이 동기적 처리방식.

(2) 비동기(Asynchronous)

-> 실행된 순서와 관계 없이 결과가 나오는 것을 말함.

  • 특정 코드를 수행해는 도중에도 아래로 계속 내려가며 수행함.
  • 순서대로 진행하는 것일뿐 아니라 한번에 여러개의 코드를 수행할수 있음.
  • 비동기적 처리는 주로 api요청, 파일읽기, 암호화, 복호화 등의 작업에서 자주 사용되는 처리방식.

2) Blocking Model & Non-Blocking Model

(1) Blocking Model

-> 코드의 실행이 끝나기 전까지 실행 제어권을 다른곳에 넘기지 않아 다른 작업을 하지 못하고 대기하는 것.

(2) Non-Blocking Model

-> 코드의 실행이 끝나지 않아도 실행 제어권을 다른곳에 넘겨 다음 코드가 실행될 수 있게하는 것.

= 자바스크립트는 Async + Non-Blocking Model을 채용하여 현재 실행중인 코드의 실행이 끝나지 않아도 다음 코드를 호출.
자바스크립트는 각 명령들의 순서대로 실행될 수 있게 구현되어 있지만, Non-Blocking Model에 의해 동기적 명령이 아닌 모든 함수는 비동기적으로 실행됨.

코드를 입력하세요

동기, 비동기와의 차이점?

  • 제어권을 넘기면(Non-Blocking) 다른 코드도 실행될 수 있으므로 비동기 처리가 가능하지만 제어권을 넘기지 않으면(Blocking) 비동기 처리가 가능한 환경이어도 비동기 처리가 불가능하다.

setTimeOut 은 특정 시간 뒤에 함수를 실행해주는 역할.

(예시)

  1. setTimeout(first, 1000) : 1초 뒤에 first() 함수 → console.log(’First’); 가 실행되도록 명령합니다.
  2. console.log('Middle'); : ‘Middle’ 문자열이 출력됩니다.
  3. console.log('Last'); : ‘Last’ 문자열이 출력됩니다.
  4. 1초가 지난 뒤 ‘First’ 문자열이 출력됩니다.

    = 자바스크립트가 Blocking Model이었다면 위 예시 코드는 1초를 기다린 이후에 First()함수를 먼저 실행하여 'First'를 출력한 뒤, 'Middle', 'Last'순으로 출력.

0개의 댓글