--- id: JS-ASYNC-001 category: "10_Wiki/๐Ÿ’ก Topics/AI" confidence_score: 1.0 tags: [javascript, frontend, web-development, event-loop, async-await, concurrency] last_reinforced: 2026-04-26 --- # JavaScript Async and Event Loop (JS ๋น„๋™๊ธฐ์™€ ์ด๋ฒคํŠธ ๋ฃจํ”„) ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > "์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์˜ ์ œ์•ฝ์„ '๊ธฐ๋‹ค๋ฆผ์˜ ๋ฏธํ•™'์œผ๋กœ ๊ทน๋ณตํ•˜๊ณ , ์ด๋ฒคํŠธ ๋ฃจํ”„๋ผ๋Š” ์˜๋ฆฌํ•œ ์ค‘์žฌ์ž๋ฅผ ํ†ตํ•ด ๋ฉˆ์ถ”์ง€ ์•Š๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์™„์„ฑํ•˜๋ผ" โ€” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋‹จ์ผ ์Šค๋ ˆ๋“œ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋…ผ๋ธ”๋กœํ‚น(Non-blocking) I/O๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ์ˆ˜๋งŽ์€ ๋น„๋™๊ธฐ ์ž‘์—…์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ํ•ต์‹ฌ ๊ตฌ๋™ ๋ฉ”์ปค๋‹ˆ์ฆ˜. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **์ถ”์ถœ๋œ ํŒจํ„ด:** "Single-threaded Concurrency" โ€” ์ฝœ ์Šคํƒ(Call Stack)์ด ๋น„์—ˆ์„ ๋•Œ ํƒœ์Šคํฌ ํ(Task Queue)์— ๋Œ€๊ธฐ ์ค‘์ธ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰ํ•˜์—ฌ, ๋ฌด๊ฑฐ์šด ์ž‘์—…์ด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋ฅผ ์ ์œ (Blocking)ํ•˜์ง€ ์•Š๋„๋ก ๊ด€๋ฆฌํ•˜๋Š” ์Šค์ผ€์ค„๋ง ํŒจํ„ด. - **ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ:** - **Call Stack:** ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ•จ์ˆ˜๋“ค์ด ์Œ“์ด๋Š” ๊ณณ. - **Web APIs:** ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋น„๋™๊ธฐ ์ž‘์—…(ํƒ€์ด๋จธ, ๋„คํŠธ์›Œํฌ ์š”์ฒญ ๋“ฑ) ์ˆ˜ํ–‰. - **Callback Queue (Task Queue):** ๋น„๋™๊ธฐ ์ž‘์—… ์™„๋ฃŒ ํ›„ ์‹คํ–‰๋  ์ฝœ๋ฐฑ๋“ค์ด ๋Œ€๊ธฐํ•˜๋Š” ๊ณณ. - **Microtask Queue:** Promise์˜ `.then` ๋“ฑ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋น„๋™๊ธฐ ์ž‘์—…์ด ๋Œ€๊ธฐ (์ผ๋ฐ˜ ํƒœ์Šคํฌ ํ๋ณด๋‹ค ๋จผ์ € ์‹คํ–‰). - **Event Loop:** ์ฝœ ์Šคํƒ๊ณผ ํ๋ฅผ ์ƒ์‹œ ๊ฐ์‹œํ•˜๋ฉฐ ์ž‘์—…์„ ์˜ฎ๊ฒจ์ฃผ๋Š” ์ค‘์žฌ์ž. - **์˜์˜:** ํ˜„๋Œ€ ์›น ํ”„๋ก ํŠธ์—”๋“œ์˜ ๋ถ€๋“œ๋Ÿฌ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ์‹ค์‹œ๊ฐ„ ๋ฐ˜์‘์„ฑ์„ ์ง€ํƒฑํ•˜๋Š” ๊ธฐ์ˆ ์  ๋ฟŒ๋ฆฌ. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ฝœ๋ฐฑ ์ง€์˜ฅ(Callback Hell)์—์„œ ๋ฒ—์–ด๋‚˜, Promise์™€ `async/await`๋ผ๋Š” ๋ฌธ๋ฒ•์  ์„คํƒ•(Syntactic Sugar)์„ ํ†ตํ•ด ๋น„๋™๊ธฐ ์ฝ”๋“œ๋ฅผ ๋™๊ธฐ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ง๊ด€์ ์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ์‹œ๋Œ€๋กœ ์™„์ „ํžˆ ์ „์ด๋จ. - **์ •์ฑ… ๋ณ€ํ™”:** ConnectAI ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์€ VS Code์˜ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋ฅผ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด, ๋ชจ๋“  ๋Œ€๊ทœ๋ชจ ์ง€์‹ ๊ฒ€์ƒ‰ ๋ฐ ๋ชจ๋ธ ํ˜ธ์ถœ ๋กœ์ง์„ ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ ๋ฃจํ”„ ์ตœ์ ํ™” ํŒจํ„ด์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌํ•จ. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - [[Frontend-Architecture]], [[Message-Queues-and-Event-Streams]], System-Design-for-AI-Scale, [[Reactive-Programming]] - **Raw Source:** 10_Wiki/Topics/AI/JavaScript-Async-and-Event-Loop.md