본문 바로가기
IT/javascript

자바스크립트 WebAPI와 단일 스레드

by 뉴코딩맨 2023. 4. 17.
JavaScript는 단일 스레드 언어입니다. 이는 JavaScript 엔진이 한 번에 하나의 작업만 수행할 수 있음을 의미합니다. 그러나 이러한 제한으로 인해 JavaScript가 UI 블로킹 문제와 같은 문제를 해결하는 방법이 필요합니다. 이를 해결하기 위해 JavaScript는 Web API를 사용합니다.
 
Web API는 브라우저에서 제공되는 비동기 함수들의 집합입니다. Web API를 통해 브라우저는 JavaScript의 단일 스레드 제한을 우회하여 동시성 작업을 처리할 수 있습니다. Web API는 대부분 비동기 함수들로 구성되어 있으며, 이러한 함수들은 백그라운드 스레드에서 실행됩니다.
 
예를 들어, setTimeout() 함수는 Web API에 속해 있으며, JavaScript에서 실행되면 Web API에 있는 setTimeout() 함수가 백그라운드에서 실행됩니다. 이 함수는 지정된 시간이 경과하면 JavaScript 엔진으로 콜백 함수를 보내고, 이 함수는 JavaScript 엔진에서 실행됩니다.
 
따라서 JavaScript는 Web API를 사용하여 비동기 작업을 처리하고, 이러한 작업이 완료되면 콜백 함수를 호출하여 결과를 반환합니다. 이를 통해 JavaScript는 단일 스레드에서 비동기 작업을 처리할 수 있습니다.
 
하지만 이러한 작업이 모두 완료되어야만 콜백 함수가 실행됩니다. 이 때문에 일부 작업이 너무 오래 걸리면 JavaScript 엔진은 다음 작업을 처리하지 못하고 대기해야 합니다. 이는 대개 성능 문제를 일으키며, 이를 해결하기 위해 비동기 함수들은 보통 프로미스나 async/await와 같은 패턴으로 사용됩니다.
 
결론적으로, 자바스크립트는 단일 스레드 언어이지만 Web API를 통해 비동기 작업을 처리할 수 있습니다. 이러한 비동기 작업은 백그라운드 스레드에서 실행되며, 작업이 완료되면 콜백 함수를 호출하여 결과를 반환합니다.

댓글