▶ Single Thread 언어, JavaScript
Thread란?
작업을 처리할 때 실제로 작업을 수행하는 주체
multi-thread라면, 업무를 수행할 수 있는 주체가 여러 개라는 의미이다.
▶ JavaScript는 한번에 여러 일을 수행할 수 없다
JavaScript는 1번에 1가지 일만 수행할 수 있는 Single Thread 언어이다.
동시에 여러 작업을 처리할 수 없다.
즉, JavaScript는 하나의 작업을 요청한 순서대로 처리할 수 밖에 없다
Q. 그러면 어떻게 Single Thread인 JavaScript가 비동기 처리를 할 수 있을까?
=> JavaScript Runtime
▶ JavaScript Runtime
JavaScript가 동작할 수 있는 환경 (Runtime)
JavaScript 자체는 Single Thread이므로, 비동기 처리를 할 수 있도록 도와주는 환경이 필요하다
JavaScript에서 비동기와 관련한 작업은 "브라우저" 또는 "Node"와 같은 환경에서 처리한다
▶브라우저 환경에서의 JavaScript 비동기 처리 관련 요소
| 1. JavaScript Engine의 Call Stack 2. Web API 3. Task Queue 4. Event Loop |
▶ 비동기를 사용하는 이유 - "사용자 경험"
| 예를 들어 아주 큰 데이터를 불러온 뒤 실행되는 앱이 있을 때, 동기식으로 처리한다면 데이터를 모두 불러온 뒤에서야 앱의 실행 로직이 수행된다 사용자들은 마치 앱이 멈춘 것 같은 경험을 하게 됨 즉, 동기식 처리는 특정 로직이 실행되는 동안 다른 로직 실행을 차단하기 때문에 마치 프로그램이 응답하지 않는 듯한 사용자 경험을 만든다 비동기로 처리한다면, 먼저 처리되는 부분부터 보여줄 수 있으므로 사용자 경험에 긍정적인 효과를 볼 수 있다. 이와 같은 이유로 많은 웹 기능은 비동기 로직을 사용해서 구현된다. |
'WEB > JavaScript' 카테고리의 다른 글
| [JavaScript][비동기] 비동기 처리 동작 (0) | 2024.04.23 |
|---|---|
| [JavaScript][비동기] 런타임의 시각적 표현 (0) | 2024.04.23 |
| [JavaScript][비동기] 동기 (0) | 2024.04.23 |
| [JavaScript][Event] addEventListener에서의 화살표 함수 주의사항 (0) | 2024.04.22 |
| [JavaScript][Event] 이벤트 동작 취소 실습 (0) | 2024.04.22 |