이전에 JS의 이벤트 루프에 대해 정리해봤다. 이번에는 조금 더 깊게 공부해보자. JS는 싱글스레드 언어싱글 스레드는 한 번에 하나의 작업만 수행할 수 있다. Python과 Java는 멀티 스레드를 지워해 여러 코드 로직은 동시에 실행할 수 있지만, JS는 싱글 스레드 언어이기 때문에 하나의 코드만 실행할 수 있다. 하지만 웹 애플리케이션에서는 네트워크 요청, 타이머, 이벤트 처리와 같은 작업을 비동기적으로 병렬 처리하는 경우가 있다. JS가 하나의 동작씩 동작한다면 위와 같은 동작을 하는 웹 애플리케이션은 굉장히 느릴것이다. 이러한 속도 저하 문제를 해결하기 위해서 JS 언어 엔진에서가 아닌 브라우저 내부의 멀티 스레드인 Web APIs에서 비동기 및 논블로킹으로 작업을 처리한다. 위와 같은 방법은 메..
동기
동기(Synchronous) 방식 동기 방식은 코드가 작성된 순서대로 작업이 순차대로 진행되는 방식을 의미하며, 이전 작업이 완료되기 전까지 다음 작업을 진행하지 않는 특징이 있다. 동기적으로 코드를 작성하면 직관적인 코드를 작성하기 쉽다는 장점이 있다. 하지만, 한꺼번에 여러 작업을 수행하는 코드에서는 이전 작업의 완료를 기다리며 전체 프로세스의 성능이 저하될 수 있다는 단점이 있다. 웹에서는 API 혹은 서버와의 통신에서 위와같은 문제가 발생해 성능 저하가 발생할 수 있다. 이러한 문제는 페이지 로딩 속도 저하, 상호작용의 반응 속도 저하 등의 원인이 될 수 있다. 비동기(Asynchronous) 방식비동기 방식은 코드가 작성된 순서대로 동작은 하지만 이전 작업의 완료 여부에 따라 기다리지 않고 독..