프론트엔드를 공부하면서 많이 들어봤지만 아직도 개념이 정확하게 잡혀 있지 않다는 게 창피한 비동기 처리. 이번에 면접을 보면서 이 질문에 대답을 명확히 하지 못 했다는 수치심을 느끼고 이 참에 제대로 정리하고 넘어가고자 한다.
동기 VS 비동기
자바스크립트가 싱글 스레드다. 싱글 스레드란 무엇일까? 한 마디로 자바스크립트 언어는 한 번에 하나만 수행할 수 있다는 말이다. 그렇기 때문에 동기와 비동기의 개념이 나온 것 같다.
동기란 하나의 작업이 수행되고 끝난 다음에 또 다른 작업이 수행되는 것처럼 작업이 순서대로 하나씩 수행되는 방식을 말한다. 반대로 비동기란 하나의 업무를 처리하는 동시에 다른 업무도 처리하는 것을 말한다. 그런데 한 번에 하나의 작업만 수행한다던 자바스크립트로 어떻게 비동기 처리를 할 수 있을까?
그 이유는 브라우저가 멀티 스레드이기 때문이다. 브라우저에서 제공하는 API들을 Web API라고 부르는데, 이 Web API들은 각 API 마다 스레드들이 할당돼있다. 따라서 자바스크립트에서 실행되는 비동기 처리는 자바스크립트가 브라우저에게 처리해달라고 요청해 동시에 작업을 수행할 수 있게 만든 것이다.
이런 싱글 스레드 모델을 극복하기 위해, 즉, 비동기 처리를 위해 콜백 함수, 프로미스 객체, async/await이 사용된다.
참고자료
https://inpa.tistory.com/entry/%F0%9F%8C%90-js-async
https://yozm.wishket.com/magazine/detail/1982/
'TIL' 카테고리의 다른 글
Next.js v14 Error : createContext in a Server Component (0) | 2024.02.14 |
---|---|
[TIL] 이벤트 버블링? (0) | 2024.01.23 |
Git rebase (0) | 2023.10.07 |
Git tag (0) | 2023.10.02 |