let i = 0;
const start = Date.now();
let a = setInterval(() => {
i += 1000;
console.log(Date.now() - start - i);
}, 1000);
let b = setInterval(() => {
heavyTask();
}, 1000);
function heavyTask() {
console.time("heavyTask");
for (let i = 0; i < 2_000_000_000; i++) {}
console.timeEnd("heavyTask");
}
setInterval 시간(1초) 보다 긴 작업이 메인 스레드에서 실행되면 오차가 커지긴 하나 추후에 보정을 해주는 것을 확인할 수 있었다.
let intervalId
// 1. 서버로 부터 시간이 온다 with Socket
// 2. intervalId clear
clear(intervalId)
// 3. time 변수에 서버로 부터 온 시간 할당
time = serverTime;
// 4. time 변수를 1초 마다 반복해서 감소 or 증가 시키는 함수 실행
intervalId = setInterval(()=>{time++})
// 1. ~ 4. 반복