[๊ธฐ์ˆ  ๋ฉด์ ‘] JavaScript


๐Ÿง ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋Œ€๋น„๋ฅผ ์œ„ํ•œ ๊ณต๋ถ€ 2..


Virtual-DOM

DOM์„ ์ถ”์ƒํ™”ํ•œ ๊ฐ€์ƒ์˜ ๊ฐ์ฒด. DOM์ด๋ž€ HTML ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ ๋ฌธ์„œ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์„ ๊ฐ์ฒด๋กœ ๊ตฌ์กฐํ™”ํ•œ ๊ฒƒ์ด๋‹ค.

virtual-DOM์€ ๋ Œ๋”๋ง์˜ ๋น„ํšจ์œจ์ ์ธ ๋ฌธ์ œ, DOM์˜ ๋ณต์žก๋„ ์ฆ๊ฐ€๋กœ ์ธํ•œ ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›Œ์ง€๋Š” ๋ฌธ์ œ ๋“ฑ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ ์ด๋‹ค.

Vritual-DOM์— ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ํ•œ๋ฒˆ์— ๋ชจ์œผ๊ณ (๋ฒ„ํผ๋ง) ์‹ค์ œ DOM๊ณผ ์ฐจ์ด๋ฅผ ํŒ๋‹จํ•œ ํ›„, ๊ตฌ์„ฑ ์š”์†Œ์˜ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ์ฐพ์•„ ๋ฐ”๊พผ ํ›„, ๊ทธ์— ๋”ฐ๋ฅธ ๋ Œ๋”๋ง์„ ํ•œ ๋ฒˆ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง ๊ณผ์ •(what happens when type google)

  1. ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ํŽ˜์ด์ง€์— ์ ‘์†ํ•˜์—ฌ HTML์„ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋‚ด๋ ค๋ฐ›์œผ๋ฉด, ๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง ์—”์ง„์—์„œ ์ด๋ฅผ ํŒŒ์‹ฑํ•œ๋‹ค.
  2. HTML์„ ํŒŒ์‹ฑํ•˜๋ฉด์„œ DOM ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋•Œ Link ํƒœ๊ทธ๋ฅผ ๋งŒ๋‚˜ StyleSheet๋ฅผ ๋‚ด๋ ค๋ฐ›๊ฒŒ ๋  ๊ฒฝ์šฐ CSS ํŒŒ์‹ฑ์„ ํ†ตํ•ด CSSOM(CSS Object Model) ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค.
  3. ์ด ๋‘˜์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ๋ ˆ์ด์•„์›ƒ ์ž‘์—…์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ทธ๋ ค์ค„ ์˜์—ญ์„ ๊ณ„์‚ฐํ•œ ๋’ค ํ™”๋ฉด์— ๋ฟŒ๋ ค์ค€๋‹ค.
  4. ์ด๋•Œ ์œ„ ๊ณผ์ •์„ ์ง„ํ–‰ํ•˜๋ฉฐ Javascript๋ฅผ ๋งŒ๋‚˜๋ฉด, ๋ Œ๋”๋ง ์—”์ง„์ด ์•„๋‹Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ์ปจํŠธ๋กค์„ ๋„˜๊ฒจ๋ฐ›๊ณ  ๊ฒฐ๊ณผ๊ฐ’์„ ์ค€๋‹ค. ์ด๋•Œ DOM ํŒŒ์‹ฑ์€ ์ค‘๋‹จ๋œ๋‹ค.
  5. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์‹คํ–‰์ด ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์‹œ HTML ํŒŒ์„œ๋กœ ์ œ์–ด ๊ถŒํ•œ์ด ๋„˜์–ด๊ฐ€๊ณ  ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ค‘์ง€๋œ ์‹œ์ ๋ถ€ํ„ฐ DOM ํŒŒ์‹ฑ์„ ์žฌ๊ฐœํ•œ๋‹ค.

์ƒ์„ฑ๋œ DOM ๋…ธ๋“œ์˜ ๋ ˆ์ด์•„์›ƒ ์ˆ˜์น˜ ๋ณ€๊ฒฝ ์‹œ ์˜ํ–ฅ์„ ๋ฐ›์€ ๋ชจ๋“  ๋…ธ๋“œ์˜ ์ˆ˜์น˜๋ฅผ ์žฌ๊ณ„์‚ฐ ํ•˜์—ฌ ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ์žฌ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์„ Reflow ๊ณผ์ •์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์ด ๊ณผ์ •์ด ๋๋‚œ ํ›„ ์žฌ์ƒ์„ฑ๋œ ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ๋‹ค์‹œ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ์„ Repaint๋ผ๊ณ  ํ•œ๋‹ค. (reflow๊ฐ€ ์ด๋ฃจ์–ด์กŒ๋‹ค๊ณ  ํ•ญ์ƒ repaint ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋ฐฐ๊ฒฝ์ƒ‰ ๋“ฑ ๋ ˆ์ด์•„์›ƒ ์ˆ˜์น˜์— ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š๋Š” ๊ฒƒ์€ repaint๋งŒ ์ง„ํ–‰)

script ํƒœ๊ทธ์˜ ์œ„์น˜

๋ธŒ๋ผ์šฐ์ €๋Š” ๋™๊ธฐ์ ์œผ๋กœ HTML, Css, Javascript๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๋•Œ๋ฌธ์— script ํƒœ๊ทธ์˜ ์œ„์น˜์— ๋”ฐ๋ผ ๋ธ”๋กœํ‚น์ด ๋ฐœ์ƒํ•˜์—ฌ DOM ์ƒ์„ฑ์ด ์ง€์—ฐ๋  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค. ๋•Œ๋ฌธ์— body ์š”์†Œ์˜ ๊ฐ€์žฅ ์•„๋ž˜์— script ํƒœ๊ทธ๋ฅผ ์œ„์น˜์‹œํ‚ค๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

  • HTML ์š”์†Œ๋“ค์ด ์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ ์ง€์—ฐ์œผ๋กœ ์ธํ•ด ๋ Œ๋”๋ง์— ์ง€์žฅ์„ ๋ฐ›์ง€ ์•Š์•„ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์‹œ๊ฐ„ ๋‹จ์ถ•
  • DOM์ด ์™„์„ฑ๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ DOM ์š”์†Œ์— ์ ‘๊ทผ ์‹œ ์ฐธ์กฐ ์˜ค๋ฅ˜ ๋ฐœ์ƒ

Hoisting

ํ˜ธ์ด์ŠคํŒ…์ด๋ž€, ํ•จ์ˆ˜ ์•ˆ์— ์žˆ๋Š” ์„ ์–ธ๋“ค์„ ๋ชจ๋‘ ๋Œ์–ด์˜ฌ๋ ค ํ•ด๋‹น ํ•จ์ˆ˜ ์œ ํšจ ๋ฒ”์œ„์˜ ์ตœ์ƒ๋‹จ์— ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

ํด๋กœ์ €๋ž€?

ํด๋กœ์ €๋Š” ๋ฐ˜ํ™˜๋œ ๋‚ด๋ถ€ ํ•จ์ˆ˜๊ฐ€ ์ž์‹ ์ด ์„ ์–ธ๋์„ ๋•Œ์˜ ํ™˜๊ฒฝ(Lexical environment)์ธ ์Šค์ฝ”ํ”„๋ฅผ ๊ธฐ์–ตํ•˜์—ฌ, ๊ทธ ์Šค์ฝ”ํ”„ ๋ฐ–์—์„œ ํ˜ธ์ถœ๋˜์–ด๋„ ์Šค์ฝ”ํ”„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜์ด๋‹ค.

์ฆ‰, ์ž์‹ ์„ ๊ฐ์‹ธ๊ณ  ์žˆ๋Š” ๋ฐ”๊นฅ ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด๋ถ€์˜ ํ•จ์ˆ˜๋ฅผ ๋ชจ๋‘ ํด๋กœ์ €๋ผ ํ•˜๋ฉฐ, ํด๋กœ์ €์˜ ์‚ฌ์šฉ์„ ํ†ตํ•ด ์ „์—ญ ๋ณ€์ˆ˜์˜ ์‚ฌ์šฉ์„ ์–ต์ œํ•  ์ˆ˜์žˆ๊ณ , OOP์˜ ์žฅ์  ์ค‘ ํ•˜๋‚˜์ธ ์บก์Šํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ์€๋‹‰ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ชจ๋“  ํ•จ์ˆ˜๋Š” ๊ฐ์ž์˜ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์— ์Šค์ฝ”ํ”„ ์ฒด์ธ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, ์™ธ๋ถ€ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์‹คํ–‰์ด ์ข…๋ฃŒ๋˜์–ด๋„ ์Šค์ฝ”ํ”„ ์ฒด์ธ์€ ์œ ์ง€๋œ๋‹ค๋Š” ์›๋ฆฌ๋ฅผ ํ†ตํ•ด ํด๋กœ์ €์˜ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์‹คํ–‰ ์ปจํ…์ŠคํŠธ

์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ž€, ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ํ™˜๊ฒฝ์ด๋‹ค. ์‹คํ–‰์ค‘์ธ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์— ์Šคํƒ์ฒ˜๋Ÿผ ์Œ“์ด๋ฉฐ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

this

this๋Š” ์ž์‹ ์ด ์†ํ•œ ๊ฐ์ฒด ๋˜๋Š” ์ž์‹ ์ด ์ƒ์„ฑํ•  ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ž๊ธฐ ์ฐธ์กฐ ๋ณ€์ˆ˜์ด๋‹ค.

Restful API

REST๋ž€ HTTP URI๋ฅผ ํ†ตํ•ด ์ž์›์„ ๋ช…์‹œํ•˜๊ณ , HTTP Method๋ฅผ ํ†ตํ•ด ์ž์›์— ๋Œ€ํ•œ CRUD Operation์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

API๋ž€ ๋ฐ์ดํ„ฐ์™€ ๊ธฐ๋Šฅ์˜ ์ง‘ํ•ฉ์„ ์ œ๊ณตํ•จ์œผ๋กœ์จ ํ”„๋กœ๊ทธ๋žจ ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์„ ์ด‰์ง„ํ•˜๋ฉฐ, ์ •๋ณด ๊ตํ™˜์„ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

๋”ฐ๋ผ์„œ REST API๋ž€ REST๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ API ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ด๋‹ค.

Promise์™€ Callback์˜ ์ฐจ์ด์ 

๋‘˜ ๋‹ค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํŒจํ„ด์ด๋‹ค. Callback์˜ ๊ฒฝ์šฐ ํ•จ์ˆ˜์˜ ์ฒ˜๋ฆฌ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜๋ฅผ ์ค‘์ฒฉ๋˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•ด ์ฝœ๋ฐฑ ์ง€์˜ฅ์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๋‹จ์ ๊ณผ, ์—๋Ÿฌ ์ฒ˜๋ฆฌ๊ฐ€ ํž˜๋“ค๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ES6์—์„œ๋ถ€ํ„ฐ Promise๋ฅผ ์ •์‹์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

Async, Await์ด๋ž€? Promise์™€์˜ ์ฐจ์ด์ ์€?

Promise๋ฅผ ๋”์šฑ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ES8 ๋ฌธ๋ฒ•์ด๋‹ค. ํ•จ์ˆ˜ ์•ž๋ถ€๋ถ„์— async ํ‚ค์›Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ promise ์•ž๋ถ€๋ถ„์— await ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

์ด ๊ฒฝ์šฐ promiseโ€ฆthen ๋ณด๋‹ค ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•ด์ง€๋ฉฐ, ์—๋Ÿฌ ์ฒ˜๋ฆฌ์˜ ๊ฒฝ์šฐ tryโ€ฆcatch๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ตœ์ ํ™”

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ๋ณด์žฅ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š”๋ฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ์ „์—ญ ๋ณ€์ˆ˜๋กœ ์ธํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜: ์ „์—ญ ๋ณ€์ˆ˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์˜์—ญ์ด๋‹ค.
  2. ์žŠํ˜€์ง„ ํƒ€์ด๋จธ ๋˜๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋กœ ์ธํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜: setIntrval์„ Clearํ•ด์ฃผ์ง€ ์•Š์€ ํ•œ ๊ณ„์† ๋™์ž‘ํ•  ๊ฒƒ์ด๋‹ค.
  3. ํด๋กœ์ €
  4. DOM: DOM ๋…ธ๋“œ๋ฅผ ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ๋กœ ์ €์žฅํ•˜๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์—์„œ DOM ๋…ธ๋“œ๋ฅผ ์ฐธ์กฐํ•˜์ง€ ๋ชปํ•˜๊ฒŒ๋” ํ•ด์•ผ ๋ฉ”๋ชจ๋ฆฌ ๋ฆด๋ฆฌ์ฆˆ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

Mutable๊ณผ Immutable

mutable์€ ๋ฐ”๋€” ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜ ํƒ€์ž…. immutable์€ ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฐœ๋…. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ Object์™€ Array๋งŒ Mutableํ•œ ํƒ€์ž…์ด๊ณ , ๋‹ค๋ฅธ ์›์‹œ ํƒ€์ž„์˜ ๊ฒฝ์šฐ immutableํ•˜๋‹ค.

๋น„๋™๊ธฐ ์ฝœ๋ฐฑ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ์–ธ์–ด๋กœ, ๋‹จ์ผ ํ˜ธ์ถœ ์Šคํƒ์ด ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ผ๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋”ฐ. ๋งŒ์•ฝ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฌด๊ฑฐ์šด ์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋‹จ์ผ ์Šค๋ ˆ๋“œ๋กœ ์ธํ•ด ์ž‘์—…์ด ๋ธ”๋กœํ‚น๋  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰ ๋จนํ†ต์ด ๋  ์ˆ˜ ์žˆ๋‹ค.(๊ธฐ๋Šฅ ๋˜๋Š” UI๊ฐ€ ๋ฉˆ์ถค)

์ด๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•œ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์ด ๋ฐ”๋กœ ๋น„๋™๊ธฐ ์ฝœ๋ฐฑ์ด๋‹ค. ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ์–ธ์–ด์ž„์—๋„ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ Web APIs์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ์ œ๊ณตํ•˜์—ฌ ๋น„๋™๊ธฐ ์ž‘์—…์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ•จ์ˆ˜๋ฅผ ๋™๊ธฐ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด ํ˜ธ์ถœ ์Šคํƒ์— ์Œ“์—ฌ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค. ์ด๋•Œ, AJAX๋‚˜ setTimeout, DOM event ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ํ˜ธ์ถœ ์Šคํƒ์—์„œ Web APIs๋กœ ๋ณด๋‚ด๊ณ  ์ •ํ•ด์ง„ ์‹œ๊ฐ„ ๋˜๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์ˆœ๊ฐ„์— ์ˆœ์ฐจ์ ์œผ๋กœ Callback queue(Task Queue)์— ์ ์ œํ•œ๋‹ค. Callback ํ์— ์ ์žฌ๋œ ํ•จ์ˆ˜๋“ค์€ ํ˜ธ์ถœ ์Šคํƒ์— ์Œ“์—ฌ ์žˆ๋˜ ํƒœ์Šคํฌ๋“ค์ด ๋ชจ๋‘ ์ฒ˜๋ฆฌ๋  ๊ฒฝ์šฐ, ์ฐจ๋ก€๋กœ ์Šคํƒ์— ์Œ“์—ฌ์„œ ์‹คํ–‰๋œ๋‹ค.

์ด๋Ÿฌํ•œ ์ˆœํ™˜์ด ์ด๋ฒคํŠธ ๋ฃจํ”„(Event Loop)์ด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ์ด๋ฅผ ํ†ตํ•ด ๋™์‹œ์„ฑ์„ ์ง€์›ํ•œ๋‹ค.

https://velog.io/@lucas/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A9%B4%EC%A0%91-%EC%A4%80%EB%B9%84#iterator%EA%B3%BC-generator%EC%9D%84-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94




# ์นดํ…Œ๊ณ ๋ฆฌ