이번 주제는 지난번에 '[챗지피티와 공부를 해보자] 이벤트 루프와 비동기 처리 + 가비지 컬렉션과의 연관' 를 학습할때,Web APIs의 관계에 대해 같이 안봤던 것 같아서 챗지피티씨의 랜덤 추첨이 없음에도 이어서 학습해봤다. [챗지피티와 공부를 해보자] 이벤트 루프와 Web APIs의 관계 자바스크립트는 싱글 스레드 언어로 한번에 하나의 작업만 실행할 수 있다.하지만 브라우저에서 비동기 작업을 처리할때는 이벤트 루프와 Web APIs가 함께 작동하여 여러 작업을 효율적으로 수행할 수 있다.즉, Web APIs가 없을 경우에는 자바스크립트는 싱글 스레드 언어이므로 모든 작업을 순차적으로 실행해야하는 비극을 겪을 수 있다. 여기서 Web APIs란 무엇일까? Web APIs 란?브라우저가 제공하는 기능..

이벤트 루프와 비동기 처리 + 가비지 컬렉션과의 연관 자바스크립트는 싱글 스레드 기반이다. 싱글 스레드이기 때문에 한번에 한가지 작업만 실행할 수 있다.하지만 그렇다고 한번에 한가지 작업만 하게되면? 문제가 많을것이다. (무한 대기가 생기겠지?)그렇기 때문에 브라우저나 노드 환경에서 여러 작업을 동시에 처리할 수 있도록 설계되어있는데, 이 핵심이 이벤트 루프다. 이벤트 루프란?자바스크립트의 비동기 처리를 가능하게하는 매커니즘이다. (비동기 작업은 HTTP요청이나 setTimeout 등..)비동기 작업은 나중에 실행되도록 예약하고, 이벤트 루프는 준비된 작업을 실행할 수 있도록 한다.이때 어떤 순서대로 실행을 시킬까?우리가 여기서 알아야하는 개념은 '콜스택, 태스트큐, 마이크로태스크큐' 이다. 1...

자바스크립트는 단일 스레드입니다. 단일 스레드라는 것은 하나의 스택이라는 뜻으로 동시에 하나의 일만 가능하다는 것을 의미합니다. 하지만, 자바스크립트가 사용되는 환경을 보면 비동기 작업을 통해 여러개를 동시에 처리하고 있는것 같습니다. 멀티 스레드라고 착각할 수도 있을 것 같은데, 어떻게? 이렇게 동작할 수 있는지를 알아보도록 하겠습니다. 자바스크립트 엔진 메모리 힙(Memory Heap)과 콜 스택(Call Stack)으로 이루어져 있습니다. 메모리 힙 구조화되지 않은 넓은 메모리 영역을 말한다. 객체들이 할당된다 프로그램에 선언한 변수, 함수 등 콜 스택 함수 호출은 프레임들의 스택을 형성 먼저 들어온 것이 나중에 나가는 선입 후출 자바스크립트 엔진에는 설명하려는 이벤트 루프가 등장하지 않는데, 이유..