\(@^0^@)/

[JS] JS λ™μž‘μ›λ¦¬ (stack, Queue, event loop) λ³Έλ¬Έ

TIL

[JS] JS λ™μž‘μ›λ¦¬ (stack, Queue, event loop)

minjuuu 2021. 9. 8. 23:32
728x90

πŸ€” λ‹€λ₯Έ μ–Έμ–΄μ™€μ˜ 차이점?

console.log('a');
setTimeout(function(){console.log('b')}, 1000);
console.log('c');

 

JSλ₯Ό μ œμ™Έν•œ λ³΄ν†΅μ˜ λ‹€λ₯Έ 언어듀은 μœ„μ—μ„œλΆ€ν„° μ•„λž˜λ‘œ ν•œ 쀄 ν•œ 쀄 싀행을 ν•˜μ—¬ μœ„μ™€ 같은 μ½”λ“œλ₯Ό μž‘λ™μ‹œν‚¨λ‹€κ³  ν•˜λ©΄,
a -> (1초 쉬고) b -> c μ΄λŸ°μ‹μœΌλ‘œ μž‘λ™μ΄ λœλ‹€.

ν•˜μ§€λ§Œ, JSλŠ” λ‹€λ₯΄λ‹€.
setTimeout ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 경우 λ‹€λ₯Έ μ½”λ“œλ“€μ„ λ‹€ μ‹€ν–‰μ‹œν‚¨ ν›„,
setTimeout ν•¨μˆ˜μ— κ΄€ν•œ μ½”λ“œλ§Œ 1초(ν˜Ήμ€ κ·Έ 이상) 뒀에 μž‘λ™μ΄ λœλ‹€.
μ™œ μ΄λ ‡κ²Œ λ™μž‘ν•˜λŠ”μ§€ μ•Œμ•„λ³΄μž!


✨ JS λ™μž‘μ›λ¦¬

1. μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ©΄ STACKμ΄λΌλŠ” κ³³μ—μ„œ μœ„μ—μ„œλΆ€ν„° μ•„λž˜λ‘œ μˆœμ„œλŒ€λ‘œ μ‹€ν–‰λ˜λŠ”λ°,
2. Ajax μš”μ²­ μ½”λ“œ, 이벀트 λ¦¬μŠ€λ„ˆ, setTimeout 같은 비동기 ν•¨μˆ˜λ“€μ„ λŒ€κΈ°μ‹€λ‘œ μ΄λ™μ‹œν‚€κ³ ,
3. μ΄λ™ν•˜μ§€ μ•Šμ€ λ‚˜λ¨Έμ§€ ν•¨μˆ˜λ“€μ„(동기 ν•¨μˆ˜) STACKμ—μ„œ λ¨Όμ € μ‹€ν–‰μ‹œν‚¨λ‹€.
4. κ·Έλ¦¬κ³ λ‚˜μ„œ, 비동기 ν•¨μˆ˜λ“€μ„ μ²˜λ¦¬ν•΄μ•Ό ν•˜λŠ”λ° , κ·Έλ•Œ λ°”λ‘œ STACK으둜 κ°€λŠ” 것이 μ•„λ‹ˆλΌ QUEUEλ₯Ό κ±°μ³μ„œ κ°„λ‹€.
5. 처리된 비동기 ν•¨μˆ˜λ“€μ„ QUEUE에 쀄 μ„Έμ›Œμ„œ STACK이 λΉ„μ–΄μžˆμ„ 경우(동기적 ν•¨μˆ˜λ“€μ„ λ‹€ μ‹€ν–‰ν•˜κ³ λ‚˜μ„œ),
비동기 ν•¨μˆ˜λ“€μ„ μˆœμ„œλŒ€λ‘œ μ‹€ν–‰μ‹œν‚¨λ‹€.

정리λ₯Ό ν•˜μžλ©΄ : a μ‹€ν–‰ -> b(λŒ€κΈ°μ‹€) -> c μ‹€ν–‰ -> 1초 ν›„ b(queue) -> stack이 λΉ” -> stack으둜 이동 ν›„, b μ‹€ν–‰


β€» μ°Έκ³  μ½”λ”© μ• ν”Œ : https://www.youtube.com/watch?v=v67LloZ1ieI

728x90

'TIL' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[JS] 슀크립트 defer, async  (0) 2021.09.22
[JS] Number 와 parseInt의 차이점  (0) 2021.09.11
jQuery 쌩기초  (0) 2021.09.08
[JS] DocumentFragment  (0) 2021.09.04
[JS] μ˜΅μ…”λ„ 체이닝 ?.  (0) 2021.09.02