February 01, 2020
엔진의 주요 두 구성요소
자바스크립트는 기본적으로 싱글 쓰레드 기반 언어이다.
Stack의 역할
호출 스택에 처리 시간이 오래걸리는 함수가 있을 경우, 호출 스택에서 해당 함수가 실행되는 동안 브라우저는 아무 작업도 못하고 대기 상태가 된다. 이렇게되면 브라우저는 페이지를 그리지도 못하고, 어느 코드도 실행을 못하는 상태가 된다.
콜스택에 어떠한 것들이 남아있으면 동기적으로 실행되는 네크워크 요청이 콜스택을 blocking
하여 브라우저는 다른 일들을 할 수 없다. 렌더링이나 다른 코드를 실행하지 못하고 그냥 멈춰버린다.
비동기 콜백
을 사용하면 페이지 렌더링 동작을 방해하지 않고 브라우저의 응답도 끊지 않으면서 연산량이 많은 코드를 실행할 수 있다.
스택에 필요없는 느린 코드를 쌓아서 브라우저가 할일을 못하게 만들지 말아라, 유동적인 UI를 만들어라
아래의 코드처럼 0초뒤에 함수를 실행하는 코드를 작성하는 이유는?
스택이 비어있을때까지 기다리게 하기 위해서
setTimeout(function() {
console.log('hi')
}, 0);