annyoung

타이머 실행 본문

프로그래밍

타이머 실행

nopsled 2025. 7. 24. 14:43

살면서 가끔 쓸일이 있긴 하길래 만들어봤다. targetTimestamp에 목표 시간을 입력하고 돌리면된다.

 

참고로 setTimeout을 사용하는 이유는 setInterval이 특정 ms 미만인 경우 clearInterval이 먹지 않고 이중으로 선언되어서 thread가 돌아가고 브라우저가 버벅거리는 경우가 발생한다.(옛날에 썼던걸로 기억하기로는 그렇다)

 

멈출때는 새로고침하면 되고, 콘솔에 많이 떠있거나 네트워크 패킷이 많아지는 경우 주기적으로 ctrl+l을 통해 clear 시켜줘야 브라우저가 뻗지 않는다. 안그러면 OOM난다..

 

await import("https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js");

const launch = () => {
    const targetTimestamp = dayjs('2025-07-24 14:39:00');
    const remainingTime = targetTimestamp.diff(dayjs());

    if (remainingTime <= 0) {
        console.log("Run!!!!");
        // Write something to do!
        setTimeout(launch, 50);
    } else {
        const totalSeconds = Math.floor(remainingTime / 1000);
        const hours = String(Math.floor(totalSeconds / 3600)).padStart(2, '0');
        const minutes = String(Math.floor((totalSeconds % 3600) / 60)).padStart(2, '0');
        const seconds = String(totalSeconds % 60).padStart(2, '0');

        console.log("[-] Remaining:", `${hours}:${minutes}:${seconds}`);
        setTimeout(launch, 1); // 0.01s초마다 확인
    }
};

launch();

'프로그래밍' 카테고리의 다른 글

serve with cors  (0) 2025.10.23
SVG 제작하기  (3) 2025.08.14
Install apache+php on Intel MacOSX Sequoia  (0) 2025.01.09
python docx add border to image  (1) 2024.10.14
브라우저 데이터 쉐어링  (0) 2024.03.13
Comments