WEB/JavaScript

[JavaScript][비동기] JavaScript와 비동기

bay07 2024. 4. 23. 15:54

▶ 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 

 


▶ 비동기를 사용하는 이유 - "사용자 경험"

예를 들어

아주 큰 데이터를 불러온 뒤 실행되는 앱이 있을 때,
동기식으로 처리한다면 
데이터를 모두 불러온 뒤에서야 앱의 실행 로직이 수행된다 
사용자들은 마치 앱이 멈춘 것 같은 경험을 하게 됨 

즉, 동기식 처리는 
특정 로직이 실행되는 동안 
다른 로직 실행을 차단하기 때문에 
마치 프로그램이 응답하지 않는 듯한 사용자 경험을 만든다 

비동기로 처리한다면, 
먼저 처리되는 부분부터 보여줄 수 있으므로
사용자 경험에 긍정적인 효과를 볼 수 있다. 

이와 같은 이유로 
많은 웹 기능은
비동기 로직을 사용해서 구현된다.