56일차 (CS 37, 38)
Javascript의 event loop란
이벤트 루프는 자바스크립트가 싱글 스레드(한 번에 하나의 작업만 처리할 수 있는 환경) 언어임에도 불구하고 비동기 작업을 처리할 수 있게 해주는 핵심 메커니즘이다. 이벤트 루프의 주요 구성 요소는 다음과 같다. 첫 번째는 Call Stack(호출 스택)이다. 이는 현재 실행 중인 함수의 목록을 추적하는 스택으로, 함수가 호출되면 스택의 맨 위에 추가되고, 완료되면 스택에서 제거된다. 두 번째는 Callback Queue이다. 비동기 작업이 완료되면 해당 콜백 함수가 이큐에 추가된다. 이후 호출 스택이 비어있을 때, 이벤트 루프는 콜백 큐에서 함수를 가져와 호출 스택에 넣는다. 마지막은 Web APIs이다. 이는 브라우저에서 제공하는 API들로, setTimeout, fetch를 예로 들을 수 있다. 이러한 API들은 비동기 작업을 처리하고, 작업이 완료되면 콜백 함수를 콜백 큐에 추가한다.
이러한 이벤트 루프의 동작 방식은 다음과 같다. 먼저 호출 스택에서 현재 실행 중인 함수가 있으면 그것을 계속 실행시킨다. 이후 호출 스택이 비어 있으면, 이벤트 루프는 콜백 큐에서 함수를 가져와 호출 스택에 넣는다. 이 과정이 반복되는데 이것을 이벤트 루프라고 한다.
이러한 방식 덕분에 자바스크립트는 싱글 스레드임에도 불구하고 비동기 작업을 효율적으로 처리할 수 있다.
ContextAPI란
ContextAPI란 React에서 전역으로 데이터를 관리할 수 있는 방법을 제공하는 도구이다. 이 API를 사용하면 컴포넌트 트리를 통해 명시적으로 props를 전달하지 않고도 컴포넌트 간에 데이터를 공유할 수 있다. 이는 특히 깊은 컴포넌트 트리에서 여러 레벨에 걸쳐 데이터를 전달할 때 유용하다.
Context API는 Redux의 대안으로 사용될 수 있으며, 간단한 전역 상태 관리가 필요할 때 유용하다. 하지만 복잡한 상태 관리가 필요한 대규오 애플리케이션에서는 Redux와 같은 전문 상태 관리 라이브러리를 사용하는 것이 더 적합할 수 있다.