거북이 커피숍 방문한 A와 B씨 .사장님은 한사람씩 주문을 받는다고 했고 먼저 주문한 손님의 커피가 나올 때 까지 나머지 손님들은 기다려야 한다고 했다..... 사장님은 블로킹을 선언하셨다. (블로킹 : 하나의 작업이 끝날 때까지 이어지는 작업을 막는것 )
거북이 커피숍의 경우 앞 손님의 커피 주문 완료시점과 뒷 손님의 커피 주문 시작 시점이 같습니다 .하나의 커피를 만들 때까지 다른 손님의 주문은 받지 않습니다. 이때를 우리는 동기적이다 라고 합니다!
토끼 커피숍에 방문한 A와 B씨 .사장님은 언제든 주문을 받고 커피가 완성되는 즉시 커피를 제공해준다고 선언하셨다.
토끼 커피숍의 경우는 손님의 커피 주문 완료시점과 뒷 손님의 커피 주문 시작 시점이 같을 필요가 없습니다! 이때를 우리는 비동기적이다 라고 합니다 .
여러분은 어떤 커피숍에서 커피를 사먹으시고 싶으신가요 ?
비동기적 실행이라는 개념은 웹 개발에서 특히 유용합니다.
1. 백 그라운드 실행 , 로딩 창 등의 작업
2. 인터넷에서 서버로 요청을 보내고 응답을 기다리는 작업
3. 큰 용량의 파일을 로딩하는 작업
위와 같은 작업을 수행할 때 만약 동기적으로 하게 된다면 ... 하나의 하나씩만 수행할 수 있는 .. 너무 비효율적이라고 생각이 듭니다 .
동기(synchronous)
특정 코드의 실행이 완료될 때까지 기다리고 난 후 다음 코드를 수행하는 것
비동기(asynchronous)
특정 코드의 실행이 완료될 때까지 기다리지 않고 다음 코드들을 수행하는 것
자바스크립트는 싱글 스레드 기반으로 동작하는 언어입니다. 힙 영역과 하나의 콜 스택을 가집니다. 따라서 동기적으로 작동하게 되는데 비동기 처리도 가능합니다! 그 이유는 런타임에서 비동기 처리를 도와주기 때문입니다 !
(싱글 스레드란 ? 간단하게 말하자면 한가지 작업을 실행하기 위해 순차적으로 실행되는 하나의 흐름을 의미합니다 ! )
다음 글로는 타이머 관련 API에 관해 예제와 함께 살펴보겠습니다.
'HTML-CSS-JavaScript > JavaScript' 카테고리의 다른 글
[javascript] Callback을 통한 비동기 처리 (0) | 2023.03.21 |
---|---|
[javascript] 비동기 - 타이머 API (0) | 2023.03.21 |
[javascript] DOM에 대하여 (0) | 2023.03.08 |
[javascript] 문자열 - 숫자는 ? "10" - 1 = ? (0) | 2023.03.04 |
[javascript] Scope에 대해 (2) | 2023.03.02 |