자바스크립트는 싱글 스레드에서 동기방식으로 이루어진다. 동기 방식은 하나의 명령이 끝나야지만 다음 코드가 실행된다. 하지만, 모던 자바스크립트 환경에서는 많은 양의 정보를 다양한 방식으로 제공하기 위해 많은 것이 비동기로 작동한다.

ex) 사용자가 검색어를 입력해 검색을 위한 네트워크 요청이 발생하는 순간에도 사용자는 다른 작업을 처리할 수 있다.

리액트에서는 렌더링 스택을 비우는 방식으로 구현됐던 동기식의 렌더링이 16버전에 접어서 비동기식으로 작동하는 방법이 소개됨 ⇒ 18버전

자바스크립트는 왜 싱글 스레드로 설계 되었을까?

<aside> 🧠 설계 당시에는 약 30년뒤 현재처럼 자바스크립트로 웹 페이지에서 벌어지는 온갖 다양한 일을 처리해야 할 것이라고 생각하지 못했을 것이다.

</aside>

<aside> 🧠 동시에 여러개의 스레드가 DOM을 조작할수 있다면, 메모리 공유로 인해 동시에 같은 자원에 접근하면 타이밍 이슈 발생 ⇒ DOM에 문제 야기

</aside>

<aside> 🧠 하나의 코드가 실행하는 데 오래걸리면, 뒤이은 코드가 실행되지 않는다.

</aside>

비동기