πŸ†

ch7 - 2. setInterval

Index

1. setInterval

setTimeout ν•¨μˆ˜μ™€ setInterval ν•¨μˆ˜μ˜ μ°¨μ΄λŠ” λͺ…ν™•ν•©λ‹ˆλ‹€. setTimeout ν•¨μˆ˜κ°€ 일정 μ‹œκ°„ 뒀에 ν•¨μˆ˜λ‚˜ μ§€μ •λœ μ½”λ“œλ₯Ό μ‹€ν–‰ν•œλ‹€λ©΄, setInterval ν•¨μˆ˜λŠ” 일정 μ‹œκ°„μ˜ 간격을 두고 ν•¨μˆ˜λ‚˜ μ§€μ •λœ μ½”λ“œλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. 예제둜 ν™•μΈν•΄λ΄…μ‹œλ‹€.
const funcTime2=() => {console.log('go!')} setInterval(funcTime2 , 3000);
μœ„ μ½”λ“œλŠ” 'go!'λΌλŠ” λ¬Έμžμ—΄μ„ ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜κ³  3μ΄ˆλ§ˆλ‹€ μ½˜μ†”μ— 좜λ ₯ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. setTimeout ν•¨μˆ˜μ²˜λŸΌ funcTime ν•¨μˆ˜λ₯Ό 첫 번째 인자둜, 그리고 3000의 숫자λ₯Ό 두 번째 인자둜 μ§‘μ–΄λ„£μ—ˆλŠ”λ°μš”, 숫자의 λ‹¨μœ„λ„ 밀리 μ„Έμ»¨λ“œλ‘œ setTimeout ν•¨μˆ˜μ™€ μ‚¬μš©λ²•μ΄ 맀우 μœ μ‚¬ν•©λ‹ˆλ‹€. λ§ˆμ°¬κ°€μ§€λ‘œ μ‹€ν–‰ν•˜μžλ§ˆμž λ°˜ν™˜λ˜λŠ” 숫자 κ°’ μ—­μ‹œ setInterval의 ID κ°’μž…λ‹ˆλ‹€.

2. clearInterval

setTimeout μ±•ν„°μ—μ„œ λ‹€λ£¨μ—ˆλ“―μ΄ setInterval ν•¨μˆ˜λ„ κ·Έ 싀행을 μ·¨μ†Œν•˜λŠ” ν•¨μˆ˜κ°€ μ‘΄μž¬ν•©λ‹ˆλ‹€. 그것이 λ°”λ‘œ clearInterval ν•¨μˆ˜μž…λ‹ˆλ‹€. μ‚¬μš©λ°©λ²• μ—­μ‹œ λ™μΌν•©λ‹ˆλ‹€.
const funcTime2=() => {console.log('go!')} let timeId2 = setInterval(funcTime2 , 3000);/*setInterval ν•¨μˆ˜μ˜ IDλ₯Ό timeId2 λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€.*/ clearInterval(timeId2);

3. setInterval κ³Ό clearInterval 을 λ²„νŠΌμœΌλ‘œ μ œμ–΄ν•΄λ³΄κΈ°

μ•žμ„œ setTimeout 뢀뢄을 μ΄ν•΄ν•˜μ‹œλŠ”λ° 어렀움이 μ—†μ—ˆλ‹€λ©΄ 이번 챕터도 λ¬Έμ œμ—†μœΌμ‹€ κ²λ‹ˆλ‹€! κ·Έλ ‡λ‹€λ©΄ 이제 html κ³Ό ν•¨κ»˜ μ’€ 더 직관적인 UIλ₯Ό λ§Œλ“€μ–΄λ΄…μ‹œλ‹€.
<div class="btns"> <button type="button" class="btn_go">GO</button> <button type="button" class="btn_x">CANCEL</button> </div>
const btns= document.querySelector('.btns'); const funcTime=() => { console.log('go!'); } let timeId; btns.addEventListener('click', (event) => { if(event.target.classList.contains('btn_go')){ timeId = setInterval(funcTime ,1000); }else if(timeId !== undefined && event.target.classList.contains('btn_x')){ clearInterval(timeId); } });
μœ„μ˜ μ½”λ“œλ₯Ό λΆ„μ„ν•΄λ΄…μ‹œλ‹€. GO, CANCEL 두 가지 λ²„νŠΌμ΄ μ‘΄μž¬ν•˜κ³  두 λ²„νŠΌμ€ btnsλΌλŠ” 클래슀λ₯Ό 가진 div둜 λ¬Άμ—¬ μžˆμŠ΅λ‹ˆλ‹€. btns μš”μ†ŒλŠ” 이벀트 λ¦¬μŠ€λ„ˆκ°€ 달리고 μ•žμ„œ 배운 event.target을 톡해 btn_go와 btn_x μš”μ†Œμ— 이벀트λ₯Ό μœ„μž„ν•©λ‹ˆλ‹€. btn_goμ—λŠ” 1μ΄ˆλ§ˆλ‹€ funcTime ν•¨μˆ˜λ₯Ό μ‹€ν–‰μ‹œν‚€λŠ” setInterval ν•¨μˆ˜κ°€ μ—°κ²°λ˜μ–΄ 있고, btn_xμ—λŠ” setInterval ν•¨μˆ˜μ˜ IDλ₯Ό λ§€κ°œλ³€μˆ˜λ‘œ ν•˜μ—¬ κ·Έ 싀행을 μ·¨μ†Œν•  수 μžˆλŠ” clearInterval ν•¨μˆ˜κ°€ μ—°κ²°λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이제 μš°λ¦¬λŠ” λ²„νŠΌμ„ 톡해 일정 μ‹œκ°„λ§ˆλ‹€ 'go!' λ¬Έμžμ—΄μ„ 좜λ ₯ μ‹œν‚€κ±°λ‚˜ 정지할 수 μžˆλŠ” μΈν„°λž™ν‹°λΈŒν•œ μ›ΉνŽ˜μ΄μ§€λ₯Ό κ°€μ§€κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
Β