ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

setTimeout()
Promise then()

 ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ™์€ ์žฌ๊ท€ ํ˜ธ์ถœ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‘ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์œ„ ๋‘ ์ฝ”๋“œ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ๋‹ค๋ฅด๋‹ค.

setTimeout() ์‹คํ–‰ ๊ฒฐ๊ณผ
Promise then ์‹คํ–‰ ๊ฒฐ๊ณผ

 setTimeout()์œผ๋กœ ์žฌ๊ท€ ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ css์— ์ ์šฉ ํ•œ button:hover์˜ ์ƒ‰์ƒ๊ฐ’์ด ๋งˆ์šฐ์Šค ์ปค์„œ๋ฅผ ๋—์„ ๋•Œ ์ž˜ ํ•ด์ œ๋˜๋Š” ๋ฐ˜๋ฉด์— Promise then์œผ๋กœ ์žฌ๊ท€ ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ๋Š” ๋งˆ์šฐ์Šค ์ปค์„œ๋ฅผ ๋—์Œ์—๋„ button:hover์˜ ์ƒ‰์ƒ ๊ฐ’์ด ๊ทธ๋Œ€๋กœ ๋‚จ์•„ ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 ์ด๋Š” ๋‘ ๋น„๋™๊ธฐ ํ•จ์ˆ˜์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ํ์— ์ ์žฌ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 setTimeout()๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ํ…Œ์Šคํฌ ํ์— ์ ์žฌ๋˜๋Š” ๋ฐ˜๋ฉด Promise then๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” Microtask ํ์— ์ ์žฌ๋œ๋‹ค. ์ด ๋‘˜ ๋ชจ๋‘ ์ฝœ ์Šคํƒ์ด ๋น„์–ด์žˆ์„ ๋•Œ ์ด๋ฒคํŠธ ๋ฃจํ”„์— ์˜ํ•ด ์ฝœ ์Šคํƒ์— ์ ์žฌ๋œ๋‹ค๋Š” ์ ์€ ๋˜‘๊ฐ™์œผ๋‚˜ ๋‹ค์†Œ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•œ๋‹ค.

 

 ํ…Œ์Šคํฌ ํ์— ์ ์žฌ ๋œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์ฝœ ์Šคํƒ์— ์ ์žฌ๋˜์–ด ์‹คํ–‰์ด ์ข…๋ฃŒํ•˜๊ฒŒ ๋˜๋ฉด ํ…Œ์Šคํฌ ํ์— ๊ทธ ๋‹ค์Œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ์ ์žฌํ•ด ์žˆ๋”๋ผ๋„ ์ด๋ฅผ ์ด์–ด์„œ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์€ ์ฑ„, ์ด๋ฒคํŠธ ๋ฃจํ”„๋Š” ๋‹ค์‹œ ์ˆœํ™˜ ์ฐธ์กฐ๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค. ์ดํ›„ ์ด๋ฒคํŠธ ๋ฃจํ”„๊ฐ€ ๊ณ„์† ์ˆœํ™˜ ์ฐธ์กฐํ•˜๊ฒŒ ๋˜๋ฉด์„œ ์ผ์ •์‹œ๊ฐ„(60fps)๊ฐ€ ๋˜์—ˆ์„ ๋•Œ ๋žœ๋”๋ง ์‹œํ€€์Šค๋ฅผ ์ฐธ์กฐํ•˜๊ฒŒ ๋˜๊ณ  RequestAnimationFrame์— ์˜ํ•ด button:hover์˜ ๊ฐ’์ด ์—…๋ฐ์ดํŠธ ๋  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ์ƒ๊ธด๋‹ค.

 

 ๋ฐ˜๋ฉด์—, Microtask ํ์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์ด๋ฒคํŠธ ๋ฃจํ”„๊ฐ€ ์ž์‹ ์˜ ์ €์žฅ์†Œ ๋‚ด์— ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋“ค์ด ๋ชจ๋‘ ๋‹ค ์—†์–ด์งˆ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ๋ชจ๋‘ pop ๋˜์–ด ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— ์ƒˆ๋กœ์šด ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ Microtask ํ์— ์ƒˆ๋กญ๊ฒŒ ์ ์žฌ ๋œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ์ด๋ฅผ ๊ณ„์† ์ฝœ ์Šคํƒ์— ์ ์žฌํ•œ๋‹ค. ์ฆ‰, Promise then์—์„œ๋Š” ์ด๋ฒคํŠธ ๋ฃจํ”„๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ˆœํ™˜ ์ฐธ์กฐํ•˜์ง€ ๋ชปํ•œ ์ฑ„ ๊ณ„์† Microtask ํ์— ๋จธ๋ฌผ๊ฒŒ ๋˜์–ด ๋žœ๋”๋ง ์‹œํ€€์Šค๋ฅผ ์ฐธ์กฐํ•  ๊ธฐํšŒ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š์•„ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜์ง€ ๋ชปํ•œ ์ฑ„ ์ƒ‰์ƒ๊ฐ’์ด ๋ณ€ํ•˜์ง€ ์•Š์€ ๊ฒƒ์ด๋‹ค.

requestAnitmationFrame
์‹คํ–‰ ๊ฒฐ๊ณผ

 ์•ž์„œ  ์–ธ๊ธ‰ ํ•œ requestAnimationFrame ๋˜ํ•œ ์ด๋ฒคํŠธ ๋ฃจํ”„์— ์˜ํ•ด ์ฐธ์กฐ๋œ๋‹ค. ๋‹ค๋งŒ, ์ด๋ฒคํŠธ ๋ฃจํ”„์— ์˜ํ•ด ๋งค๋ฒˆ ์ฐธ์กฐ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ผ์ • ์‹œ๊ฐ„์˜ ๋žœ๋”๋ง ๊ฐ„๊ฒฉ์— ๋งž์ถฐ ์ฐธ์กฐ๊ฐ€ ์ผ์–ด๋‚˜๋Š”๋ฐ, ์ด๋Š” ์ด๋ฒคํŠธ ๋ฃจํ”„์˜ ์ˆœํ™˜ ๋˜๋Š” ์†๋„๊ฐ€ ๋žœ๋”๋ง์ด ์ฃผ๊ธฐ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š” 60fps๋ณด๋‹ค ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 requestAnimationFrame ๋˜ํ•œ ์ž๋ฃŒ๋ฅผ ํ ๊ตฌ์กฐ๋กœ ์ €์žฅํ•œ๋‹ค. FIFO(Fisrt in First out)์ด๋ผ๋Š” ํ์˜ ํŠน์„ฑ ์ƒ style์— ์ ์šฉ ๋œ ์ˆœ์„œ๋Œ€๋กœ beige => orange => red ๊ฐ€ ๋น ์ ธ ๋‚˜๊ฐ€ ์ตœ์ข…์ ์œผ๋ก  red ์ƒ‰์ƒ์ด ๋ธŒ๋ผ์šฐ์ €์— ์ ์šฉ๋œ๋‹ค.

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2024/10   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ