브라우저의 렌더링엔진은 html을 순서대로 파싱하다가, css를 로드하는 link나 style태그를 만나면 html 파싱을 통한 dom생성을 멈추고 css를 파싱해 cssom을 만든다. 마찬가지로 js를 로드하는 script 태그를 만나면 자바스크립트엔진에 제어권을 넘
(800~806) 요약 타이머 함수 호출 스케줄링: 함수 실행을 예약하는 것 타이머 함수 (setTimeout, setInterval)은 호스트 객체*이다. *EMCAScript 사양에 정의되지 않았으나, 브라우저와 Node환경에서 모두 전역 객체의 메서드
자바스크립트는 싱글스레드 방식으로 동작하지만 비동기로 동작할 수 있다. 브라우저가 호출 스케줄링을 처리하고 동시에 자바스크립트 엔진이 코드를 실행하는 멀티 스레드방식으로 동작한다.
프로미스는 전통적인 비동기 처리 방식인 콜백 패턴을 보완하고자 es6에서 추가된 새로운 비동기 처리 방식이다. 비동기 처리 시점을 명확히 표현할 수 있다.
프로미스 생성자는 콜백함수를 받고, 그 콜백함수는 resolve와 reject 함수를 인자로 전달받는다. 이전까지의 비동기 처리문제(콜백 헬, 에러 처리의 어려움)을 프로미스 메서드(then, catch)의 체이닝으로 해결한다.
ES8에서 더 간단하고 가독성 좋게 비동기처리를 할 수 있는 async/await가 도입되었다. async/await도 프로미스를 기반으로 동작하지만, 후속처리 메서드(then/catch/finally)필요 없이 동기 처리처럼 프로미스 결과를 반환할 수 있다.