
~์ด ํ์ ํจ์๋ฅผ ์คํํ์ธ์! ์๊ฐ ์์ฝ!!
๋ฆฌํด๊ฐ์ number (ํ์)
ํ์ฉ : ๋ด๊ฐ ์ํ๋ ๋งํผ ์๊ฐ์ ์ง์ฐ์ํฌ ๋
setTimout(funcion() {}, 1000)

<button class="btn">ํด๋ฆญํ๋ฉด 3์ด๊ฐ ์ง๋๋ alert ์๋ธ</button>
<script>
const btnElem = document.querySelector('.btn');
function sayHi() {
alert('์๋
!');
}
const timerId = setTimeout(sayHi, 3000);
btnElem.addEventListener('click', function () {
clearTimeout(timerId);
});
</script>
timeId = setTimeout(sample, 3000);
clearTimeout(timeId);

timeId = setTimeout(sample, 3000);
btn.addEventListener('click', function () {
clearTimeout(timeId);
});


timeId = setInterval(sample, 1000 / 60);
btn.addEventListener('click', function () {
clearInterval(timeId);
});
๋ฌด๋๋ฝ๋ผ์ ์ฑ๋ฅ์ด ์ ์ข์ผ๋ฉด ํ๋ ์ ๋ก์ค, ๋ฐฐํฐ๋ฆฌ๋ ๋นจ๋ฆฌ ๋ณ๊ณ .. ๋ฑ
๊ทธ ๋จ์ ์ ๊ฐ์ ํ => requestAnimationFrame
canvas์์๋ requestAnimationFrame์ ๋ ๋ง์ด ์setInterval๋ ์ฐ๊ธด ์. ํ์ ์ค์ ์ด ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์์ ์ด๋น 60๋ฒ์ด ๋ชฉํ (60๋ฒ์ด ๋ณด์ฅ๋๋ ๊ฒ์ ์๋)
function sample() {
console.log('sample');
timeId = requestAnimationFrame(sample);
}
sample();
btn.addEventListener('click', function () {
cancelAnimationFrame(timeId);
});

let timeId;
let n = 0;
const btn = document.querySelector('.btn');
function sample() {
n++;
console.log(n);
if (n > 200) {
return;
}
timeId = requestAnimationFrame(sample);
}
sample();
btn.addEventListener('click', function () {
cancelAnimationFrame(timeId);
});
