ch7 - 1. setTimeoutch7 - 1. setTimeout

ch7 - 1. setTimeout

Index

1. setTimeout

setTimeout ν•¨μˆ˜λŠ” 일정 μ‹œκ°„ 뒀에 ν•¨μˆ˜λ‚˜ μ§€μ •λœ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λŠ” 타이머λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. μš°μ„  κ°„λ‹¨ν•œ ν•¨μˆ˜λ₯Ό ν•˜λ‚˜ λ§Œλ“  뒀에 setTimeout ν•¨μˆ˜λ₯Ό 톡해 μ‹€ν–‰μ‹œμΌœ κΈ°λŠ₯을 ν™•μΈν•΄λ΄…μ‹œλ‹€.
const funcTime=() => {console.log('go!');} setTimeout(funcTime , 3000);
μœ„ μ½”λ“œλŠ” 'go!'λΌλŠ” λ¬Έμžμ—΄μ„ 3초 뒀에 μ½˜μ†”μ— 좜λ ₯ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. setTimeout ν•¨μˆ˜μ•ˆμ— funcTime ν•¨μˆ˜λ₯Ό 첫 번째 인자둜, 그리고 3000의 숫자λ₯Ό 두 번째 인자둜 μ§‘μ–΄λ„£μ—ˆλŠ”λ°μš”, 이 μ˜λ―ΈλŠ” setTimeout ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜λŠ” μ‹œμ μ—μ„œ 3000 밀리 μ„Έμ»¨λ“œ(1000λΆ„μ˜ 1초, 즉 3000 밀리 μ„Έμ»¨λ“œλŠ” 3초) 뒀에 funcTime ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜κ² λ‹€λŠ” μ˜λ―Έμž…λ‹ˆλ‹€. 이제 μ½”λ“œλ₯Ό μ‹€ν–‰ν•΄ λ΄…μ‹œλ‹€! μ •ν™•νžˆ 3초 뒀에 μ½˜μ†” 창에 'go!' κ°€ μ°νžˆλŠ” 것이 보일 κ²λ‹ˆλ‹€. 그런데 3μ΄ˆκ°€ 흐λ₯΄κΈ° 전에 μ–΄λ–€ μˆ«μžκ°€ λ°˜ν™˜λ˜μ§€ μ•ŠμœΌμ…¨λ‚˜μš”?! 이 숫자의 μ •μ²΄λŠ” λ’€μ—μ„œ λ°ν˜€μ§‘λ‹ˆλ‹€ :)

2. clearTimeout

setTimeout ν•¨μˆ˜κ°€ 일정 μ‹œκ°„ 뒀에 ν•¨μˆ˜λ‚˜ μ§€μ •λœ μ½”λ“œλ₯Ό μ‹€ν–‰ν•œλ‹€λ©΄ κ·Έ 단짝인 clearTimeout 은 κ·Έ 싀행을 μ·¨μ†Œν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€. μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λŠ”μ§€ μ•Œμ•„λ³ΌκΉŒμš”? 맀우 κ°„λ‹¨ν•©λ‹ˆλ‹€!
clearTimeout(timeoutID);
μš”λ ‡κ²Œ μ‚¬μš©ν•˜λ©΄ μ•žμ„œ μ‹€ν–‰λœ setTimeout ν•¨μˆ˜λŠ” 싀행을 μ·¨μ†Œν•©λ‹ˆλ‹€. κ·Έλ ‡λ‹€λ©΄ clearTimeout의 μ „λ‹¬μΈμžμ— λ“€μ–΄ μžˆλŠ” timeoutIDλŠ” 무엇을 μ˜λ―Έν• κΉŒμš”? 이것이 λ°”λ‘œ μ•žμ—μ„œ setTimeout 을 μ‹€ν–‰ν–ˆμ„ λ•Œ λ°˜ν™˜λ˜μ—ˆλ˜ μˆ˜μƒν•œ 숫자의 μ •μ²΄μž…λ‹ˆλ‹€! setTimeout ν•¨μˆ˜λŠ” μ‹€ν–‰λ˜μ—ˆμ„ λ•Œ 항상 νŠΉμ •ν•œ μˆ«μžν˜• 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€. 그것이 λ°”λ‘œ setTimeout ν•¨μˆ˜μ˜ ID κ°’μž…λ‹ˆλ‹€. 이 ID 값을 clearTimeout ν•¨μˆ˜μ— μ „λ‹¬ν•˜κ²Œ 되면 ν•΄λ‹Ή IDκ°€ κ°€λ₯΄ν‚€λŠ” setTimeout의 싀행이 μ’…λ£Œλ˜λŠ” κ²ƒμ΄μ§€μš”. λ‹€μŒκ³Ό 같은 μ½”λ“œλ‘œ μ‚΄νŽ΄λ³΄μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.
const funcTime=() => {console.log('go!')} let timeId = setTimeout(funcTime , 3000); /*setTimeout ν•¨μˆ˜μ˜ IDλ₯Ό timeId λ³€μˆ˜μ— μ €μž₯ν•©λ‹ˆλ‹€.*/ clearTimeout(timeId);
μœ„μ™€ 같은 μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ clearTimeout으둜 인해 'go!' λ¬Έμžμ—΄μ€ μ ˆλŒ€ μ½˜μ†” 창에 μ°νžˆμ§€ μ•Šμ„ κ²λ‹ˆλ‹€.
Β