- 콜 스택에서 실행중인 콜백은 끝날 때까지 보장된다. 이벤트 루프가 머물러 있는다. 그 동안 다른 작업을 할 수 없다. 콜백의 코드들이 모두 완료될 때까지 기다린다.
- 렌더 시퀀스 이벤트 루프가 주기적으로 화면을 업데이트한다. 대략 16ms 주기로
- RequestAnimationFrame "화면을 업데이트하기 전에 나의 콜백을 실행해줘" RequestAnimationFrame 큐에 콜백이 쌓인다. 브라우저에서 다음 렌더링이 발생하기 전에 콜백 함수를 실행한다.
- 이벤트 루프는 계속 반복해서 돈다. (1ms보다 빠른 속도로) 콜 스택에서 실행중인 콜백이 있다면 끝날 때까지 계속 기다린다. (그 동안 다른 작업을 할 수 없다) 콜백이 16ms 이내에 끝나야 한다.
- 마이크로태스크 큐에는 mutation observer의 콜백도 들어간다. 마이크로태스크 큐는 모두 비워진다. 후속 처리 메서드가 중간에 추가되면, (.then(() => {})... .then(() => {})) 추가된 것이 모두 비워질 때까지 이벤트 루프는 대기한다.
- setTimeout(() => {}, 0); "콜스택이 여유가 있을 때 나의 콜백을 실행해줘"