JS는 기본적으로 싱글 스레드 기반 언어이기 때문에 호출 가능 스택이 하나뿐이다. 따라서 한 번에 하나의 작업만 수행할 수 있다.
문제점
싱글 스레드 기반 언어이기 때문에 다른 작업을 수행하기 위해선 현재 수행 중인 작업이 끝날 때 까지 기다려야 한다는 문제점이 있다. 또한, 많은 시간이 걸리는 작업을 수행하게 되면 프로그램이 과도하게 느려질 우려가 존재한다.
해결방안
JS 엔진은 싱글 스레드로 동작하여 문제점이 발생하나, 브라우저는 WebAPI, Callback Queue, Event Loop 등에 의해 멀티 스레드로 동작한다. 따라서 이를 활용해 비동기적으로 작업을 수행하게 하여 문제점을 해결할 수 있다.
동기 / 비동기란 ?
동기 : 어떤 작업을 실행할 때 그 작업이 끝나기를 기다리는 방식
비동기 : 어떤 작업을 실행할 때 그 작업이 완료되지 않더라도 다음 코드를 실행하는 방식
비동기 처리의 장점
1. 웹 페이지의 반응성 향상
사용자가 요청한 작업이 완료될 때까지 기다리는 것은 좋지 않다. 따라서 비동기 처리를 통해 사용자의 요청에 빠르게 반응할 수 있도록 해야한다.
2. 네트워크 통신
웹 애플리케이션에서는 서버와의 데이터 통신이 필요하다. 동기적인 처리를 하게 되면 응답을 기다리는 동안 다른 작업을 수행할 수 없다. 따라서 비동기 처리를 활용해 데이터를 받아오는 것이 웹 페이지의 성능을 향상시키는 데에 도움이 된다.
3. 병렬 처리
비동기 처리를 통해 여러 작업을 동시에 처리할 수 있다.
4. 에러 처리
비동기 처리를 할 때에 에러가 발생하면, 해당 에러를 쉽게 처리할 수 있다. 에러 발생 시, 에러를 처리할 수 있는 콜백함수를 실행하거나 에러를 캐치하여 처리할 수 있기 때문이다.
'Today I Learned > WEB' 카테고리의 다른 글
[취업교육] STAR 기법 - 에이블런 프론트엔드부트캠프 28일차 (0) | 2024.08.22 |
---|---|
[취업교육] 1분 자기소개 구조 - 에이블런 프론트엔드부트캠프 27일차 (0) | 2024.08.22 |
[VSCODE] Emmet - 에이블런 프론트엔드부트캠프 (0) | 2024.08.07 |
[JS] JS - 에이블런 프론트엔드부트캠프 9일차 (0) | 2024.07.25 |
[VSCODE] User Snippet - 에이블런 프론트엔드부트캠프 4일차 (3) | 2024.07.24 |