1. 싱글 스레드의 딜레마 자바스크립트는 싱글 스레드(Single Thread) 기반의 언어이다. 쉽게 말해 한 번에 하나의 일밖에 처리를 못한다는 뜻이다. 그런데 우리는 브라우저에서 유튜브를 보면서 댓글도 달고 Node.js 서버는 수천 명의 요청을 동시에 처리하는 것처럼 보인다. 어떻게 가능한 것일까? 그 비결은 블로킹/논 블로킹(Blocking/Non-blocking) I/O와 이를 지휘하는 이벤트 루프(Event Loop)에 있다. 2. 블로킹 vs 논 블로킹 (Blocking vs Non-blocking) 이 개념을 이해하
자바스크립트는 싱글 스레드로 동작하는 언어이다. 따라서 한 번에 하나의 작업만 처리할 수 있다. 하지만 우리가 웹서핑을 할 때 이미지를 불러오면서 동시에 클릭도 할 수 있는 이유는 바로 비동기 처리 덕분이다. 자바스크립트에서 이 비동기 처리가 어떻게 발전해 왔는지 흐름을 알아보자. 1. 비동기의 시작: 콜백 함수(Callback) 콜백 함수는 특정 작업이 끝난 뒤에 실행하기 위해 나중에 호출될 함수를 인자로 넘겨주는 것을 의미한다. 자바스크립트는 싱글 스레드 언어이기 때문에 오래 걸리는 작업(네트워크 요청, 타이머 등)을 비동기적으