js는 정확하게 시간에 맞춰 실행하지 않는다
정확한 시간이 아닌 timer phase를 검사할 때 해당 시간이 지났는지를 보고 지났으면 poll phase에 등록하는 형태
루프의 시작
setTimeout, setInterval에 등록된 콜백 관리
timer phase는 타이머에 등록한 콜백이 언제 실행할지만 관리하고 실행은 poll phase에서 실행
타이머 콜백은 시간순으로 앞에서 false 나오는거 하나만 보면 되서 min-heap 자료구조 기반으로 구성
Timers (setTimeout / setInterval)Pending callbacks (nearly every I/O callback)Check (setImmediate)Close callbacks (socket.on(‘close’)...)
타이머 페이즈에 도착할 때 setTimeout의 시간이 도달했을 수 있고 아닐 수 있기 때문에, 해당 코드는 코드의 실행순서를 정확하게 알 수 없다
참고로 setTimeout(()=>{}, 0) 여기서 0을 전달하면 시스템은 1로 전달