Javascript 비동기 프로그래밍이란?
비동기 프로그래밍을 이해하기 위해서 줄을 늘어선 대기 줄이 있다고 하자. 먼저 주문한 손님이 물건을 받을 때 까지 뒤의 손님들은 대기 줄에서 '기다릴 수 밖에' 없다. 심지어 주문조차 할 수 없는 상황이다. 이렇게 대기열에서 아무런 행동도 하지 못하는 상황을 'Blocking' 상태라고 한다.
미리 주문한 사람이 물건을 받고 나서야 뒤의 사람이 주문이라는 행위를 할 수 있다. 이렇게 프로세스의 시작 시점과 종료시점이 동일한 상황을 동기화되어있다 라고 표현한다.
효율적인 매장 운영을 위해서 스타벅스에 도입된 사이렌 오더를 생각해보자. 방문객들은 '주문'을 하기 위해 기다릴 필요 없이 앱으로 바로 주문을 할 수 있고, 물건이 준비되면 '바로' 수령이 가능하다. 이런 상황을 '비동기 상태' 라고 한다.
Node.js 런타임 환경은 기본적으로 Non-blocking 상태인 비동기(asynchronous) 작동 방식을 가진다. Node.js 뿐만 아니라 웹에서 작동한 Javascript는 비동기적 실행을 지원한다. 우리가 인터넷을 사용하면서 백그라운드 실행, 서버에 서로 다른 요청을 보낸는 행위, 큰 용량의 파일을 로딩하는 작업들 모두 '비동기적'으로 진행되는 작업들이다.
Javascript 비동기 흐름
Javascript의 비동기 흐름은 callback, promise, async/await 문법을 사용한다.
Node.js에서는 파일을 read/write 하는 fs 모듈을 지원한다.
비동기흐름을 이해하기 위해서는 아래 섹션에 대한 이해도가 필요하다.
① blocking / non-blocking
② synchronous / asynchronous 개념
③ method chaining(Array 고차함수 들)
④ 중첩된 callback 함수의 단점 그리고 Promise 개념
⑤ Promise(resolve, reject, then, catch)
⑥ Promise 세가지 상태, Promise.all사용법
'Programming' 카테고리의 다른 글
[Javascript] Underbar 구현 (0) | 2022.05.17 |
---|---|
[Javascript] Function arguments 속성이란? (0) | 2022.05.17 |
[Javascript] Array Function some, sort, every 사용법 (0) | 2022.05.15 |
[Javascript] Function Expression vs Declaration 함수 표현식 vs 함수 선언식 차이점 (0) | 2022.05.15 |
[Javascript] onclick VS addEventListener 차이점? (0) | 2022.05.15 |
댓글