개요

고려할 상황

setInterval은 실행 시간을 얼마나 잘 보정해 줄까?

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");
}

스크린샷 2023-11-27 오후 5.35.43.png

결론

구현 결과

let intervalId 

// 1. 서버로 부터 시간이 온다 with Socket
// 2. intervalId clear
clear(intervalId)
// 3. time 변수에 서버로 부터 온 시간 할당
time = serverTime;
// 4. time 변수를 1초 마다 반복해서 감소 or 증가 시키는 함수 실행
intervalId = setInterval(()=>{time++})

// 1. ~ 4. 반복

286153827-6e45dff2-128f-4218-85ec-7737d41e8d74.mov