ํ์ด๋จธ๋ฅผ ๊ตฌํํ๋ค๊ฐ ๋ฌธ๋ ๊ทธ๋ฐ ์๊ฐ์ด ๋ค์๋ค.
์๋ฌด ์๊ฐ ์์ด setTimeout ๊ณผ setInterval์ ์ฌ์ฉํ๋ฉด์ ์๋ค๋ ์ด๋ป๊ฒ ๋์๊ฐ๋๊ฑฐ์ง?
์๋ค๋ฅผ ๋ฏฟ๊ณ ์จ๋๋๋๊ฑด๊ฐ? ๊ณผ์ฐ setTimeout๊ณผ setInterval์ด ์๊ฐ์ ๋ณด์ฅํด์ฃผ๋ ๊ฒ ๋ง๋?
๊ทธ๋์ ๊ณต๋ถํ๊ฒ ๋๋ค.
๐TL; DR
- setTimeout, setInterval์ ์ฐจ์ด์
- ์ง์ฐ ๊ฐ๊ฒฉ์ด ๋ณด์ฅ๋๋?
- ์๊ฐ์ ์ธก์ ํด์ผ๋๋ ํ์ด๋จธ๋ผ๋ฉด Date๊ฐ ํด๊ฒฐ์ฑ ์ด ๋ ์๋..?
setTimeout
์ง์ ํด์ค ์๊ฐ์ด ์ง๋ ํ์ 1ํ ํน์ ์ฝ๋๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ
๋น๋๊ธฐ ํจ์
setTimeout์ด ๋น๋๊ธฐ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ์ด์ ๋ JS์์ง์ด ์๋๋ผ WebAPI์์ ์ฒ๋ฆฌ๋ฅผ ํ๋ค.
์ด๋ฅผ ํตํด์ ์ฑ๊ธ์ค๋ ๋์ธ JS์์ ๋น๋๊ธฐ์ ์ธ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ฒ ๋๋ค.
setInterval
์ง์ ํด์ค ์๊ฐ์ด ์ง๋ ๋๋ง๋ค(๋ฐ๋ณต์ ์ผ๋ก) ํน์ ์ฝ๋๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ
๋์ ์ฐจ์ด์
setTimeout(function(){
console.log('setTimeout')
},1000)
setInterval(function(){
console.log('setInterval')
},1000)
์ด ์ฝ๋๋ฅผ ์คํํ๋ฉด ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด ์ถ๋ ฅ๋๋ค.
์ด๋ ๊ฒ setTimeout์ 1ํ ์คํ๋๋ ๋ฐ๋ฉด์ setInterval์ ์ฃผ๊ธฐ๋ง๋ค ๊ณ์ ์คํ์ด ๋๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
setInterval์ clearIntervalํ๊ธฐ ์ ๊น์ง๋ ๊ณ์ํด์ ์คํ๋๊ธฐ๋๋ฌธ์ clear์ฒ๋ฆฌ๋ฅผ ๊ผญ ํด์ค์ผํ๋ค.
์ด์ ์ค์ํ ๊ฒ์ ์ด ๋ค์์ ๊ฒ์ด๋ค.
๋ฐ๋ก
์ค์ฒฉ setTimeout์ ์ง์ฐ ๊ฐ๊ฒฉ์ ๋ณด์ฅํ์ง๋ง, setInterval์ ์ด๋ฅผ ๋ณด์ฅํ์ง ์๋๋ค๋ ์ ์ด๋ค.
setInterval
setInterval์ ์ง์ ์๊ฐ์ ํด๋นํ๋ ์ฃผ๊ธฐ๋ง๋ค ํจ์๋ฅผ ์คํํด์ค๋ค.
๊ธฐ์ค์ด ์๊ฐ์ด ๋๊ธฐ๋๋ฌธ์ ์ค์ฒฉ์ด ๋์์ ๋, ์๊ฐ ํ๋ณด๋ฅผ ๋ชปํด์ฃผ๋ ๊ฒ์ด๋ค. -> funcํจ์๋ฅผ ์คํํ๋๋ฐ ์๋ชจ๋๋ ์๊ฐ๋ ํฌํจ์ํค๊ธฐ ๋๋ฌธ์ ์ง์ฐ ๊ฐ๊ฒฉ์ด ์ค์ ์์ฑํ ๊ฐ๊ฒฉ๋ณด๋ค ์งง์์ง๊ฒ ๋๋ ๊ฒ์ด๋ค!!
setTimeout
๊ทธ์ ๋นํด setTimeout์ ํด๋น ํจ์๊ฐ ๋๋๊ณ ๋ ํ์ ๋ค์ ํจ์ ํธ์ถ์ ๋ํ ๊ณํ์ด ์ธ์์ง๊ธฐ ๋๋ฌธ์ ์ง์ฐ ๊ฐ๊ฒฉ์ด ๋ณด์ฅ๋๋ค.
๊ทธ๋ฐ๋ฐ, ์ด ์ธ์๋ ์ง์ฐ ๊ฐ๊ฒฉ์ด ๋ณด์ฅ๋์ง ์๋๋ค๋ ์ ์ ์ ์ํด์ผํ๋ค.
์๋์ ๊ฐ์ ์ํฉ์์ ๋ธ๋ผ์ฐ์ ๋ด ํ์ด๋จธ๊ฐ ๋๋ ค์ง๋ฉด ์ง์ฐ ๊ฐ๊ฒฉ์ด ๋ณด์ฅ๋์ง ์์ต๋๋ค.
- CPU๊ฐ ๊ณผ๋ถํ ์ํ์ธ ๊ฒฝ์ฐ
- ๋ธ๋ผ์ฐ์ ํญ์ด ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ชจ๋์ธ ๊ฒฝ์ฐ
- ๋ ธํธ๋ถ์ด ๋ฐฐํฐ๋ฆฌ์ ์์กดํด์ ๊ตฌ๋ ์ค์ธ ๊ฒฝ์ฐ
์ด๋ฐ ๊ฒฝ์ฐ์๋ ์ง์ฐ์ด ๋ง์ด ๋๊ธฐ๋ ํด์ ์๊ฐ์ ์ธก์ ํ๋ ํ์ด๋จธ๋ฅผ ๋ง๋ ๋ค๊ณ ํ๋ค๋ฉด Date๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ์ค์ฐจ๋ฒ์๊ฐ ํจ์ฌ ์ ์ด์ง ๊ฑฐ๋ค.
์์ ์๊ฐ๊ณผ ์ ์ง ์๊ฐ์ Date.now()๋ก ๋ถ๋ฌ์์ ๊ทธ ์ฐจ์ด๋ฅผ ๋ํ๋ผ ์ ์๋๋ก ํ๋ค๋ฉด ๋์ง ์์๊น?
Date.now()๋ UTC ๊ธฐ์ค์ผ๋ก 1970๋ 1์ 1์ผ 0์ 0๋ถ 0์ด๋ถํฐ ํ์ฌ๊น์ง ๊ฒฝ๊ณผ๋ ๋ฐ๋ฆฌ ์ด(Number)๋ฅผ ๋ฐํํ๋ ํจ์์ ๋๋ค.
์ด๋ฐ ๊ฒฝ์ฐ์๋ Web API์ ์์กดํ๋ ๊ฒ ๋ณด๋ค ๊ตญ์ ์๊ฐ ๊ธฐ์ค์ธ Date๋ฅผ ๊ฐ์ง๊ณ ์กฐ์ํ๋ ๊ฒ ๋ ์ ํ์ฑ์ ๊ฐ์ ธ๋ค ์ค ๊ฒ์ด๋ผ๊ณ ์๊ฐ๋๋ค.
๊ฒฐ๋ก
์๊ฐ ์ง์ฐ์ด ๋ณด์ฅ๋์ง ์๋๋ค.
3๋ถ ํ์ด๋จธ์ ๊ฐ์ ํ๋ฆ์ด๋ผ๋ฉด ์ด ์ ํ๋๊ฐ ํฌ๋ฆฌํฐ์ปฌ ํ์ง ์์ ์ ์์ง๋ง, ์๊ฐ ์ธก์ ์ด ๋ฉ์ธ ๊ธฐ๋ฅ์ธ ํ์ด๋จธ๋ผ๋ฉด setTimeout, setInterval๋ณด๋ค๋ ๊ฐ๊ด์ ์ธ Date๋ฅผ ์ฌ์ฉํด์ ์๊ฐ ์ฐจ๋ฅผ ๊ณ์ฐํ์ฌ ์ธก์ ์ ํ๋๊ฒ ๋ ์ข์ง ์์๊น..?
์ถ์ฒ
https://developer.mozilla.org/ko/docs/Web/API/setTimeout
https://developer.mozilla.org/ko/docs/Web/API/setInterval
https://ko.javascript.info/settimeout-setinterval#ref-28
https://ssocoit.tistory.com/249
'WEB > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] map ํจ์ (0) | 2021.02.01 |
---|---|
[JavaScript] filter() (0) | 2021.01.24 |
[JavaScript] push() & concat() (0) | 2021.01.20 |