βοΈ μ΄λ² μ λ μ ν΅ν΄ μκ² λ κ²
λκΈ°μ λΉλκΈ°μ λν΄μ μ€λͺ ν΄μ£ΌμΈμ.
ν μ€ν¬ νκ° λ¬΄μμΈκ°μ?
μ΄λ²€νΈ 루νκ° λ¬΄μμΈκ°μ?
<λ΅ λ―Έλ¦¬λ³΄κΈ°>
π€ λκΈ°μ λΉλκΈ°μ λν΄μ μ€λͺ ν΄μ£ΌμΈμ.
π€ λκΈ° = νμ€ν¬λ₯Ό μμλλ‘ νλμ© μ²λ¦¬νλ―λ‘ μ€ν μμκ° λ³΄μ₯λλ€λ μ₯μ μ΄ μμ§λ§, μμ ν μ€ν¬κ° μ’ λ£ν λκΉμ§ μ΄ν ν μ€ν¬λ€μ΄ λΈλ‘νΉλλ λ¨μ μ΄ μμ΅λλ€.
λΉλκΈ° = νμ¬ μ€ν μ€μΈ ν μ€ν¬κ° μ’ λ£λμ§ μμ μνλΌ ν΄λ λ€μ ν μ€ν¬λ₯Ό 곧λ°λ‘ μ€ννλ λ°©μμ΄λΌ λΈλ‘νΉμ΄ λ°μνμ§ μμ΅λλ€. νμ§λ§ ν μ€ν¬μ μ€ν μμκ° λ³΄μ₯λμ§ μλλ€λ λ¨μ μ΄ μμ΅λλ€.
π€ ν μ€ν¬ νκ° λ¬΄μμΈκ°μ?
π€ setTimeout, setIntervalμ κ°μ λΉλκΈ° ν¨μμ μ½λ°± ν¨μ λλ μ΄λ²€νΈ νΈλ€λ¬κ° μΌμμ μΌλ‘ 보κ΄λλ μμμ λλ€.
π€ μ΄λ²€νΈ 루νκ° λ¬΄μμΈκ°μ?
π€ μ½μ€νμ νμ¬ μ€ν μ€μΈ μ€ν 컨ν μ€νΈκ° μλμ§, κ·Έλ¦¬κ³ ν μ€νμ λκΈ° μ€μΈ ν¨μκ° μλμ§ λ°λ³΅μ μΌλ‘ νμΈν©λλ€. λ§μ½ μ½μ€νμ΄ λΉμ΄μκ³ ν μ€ν¬ νμ λκΈ° μ€μΈ ν¨μκ° μλ€λ©΄ μ΄λ²€νΈ 루νλ μμ°¨μ μΌλ‘ ν μ€ν¬ νμ λκΈ°μ€μΈ ν¨μλ₯Ό μ½μ€νμΌλ‘ μ΄λμν΅λλ€.
βοΈ λκΈ° μ²λ¦¬μ λΉλκΈ° μ²λ¦¬
ν¨μλ₯Ό νΈμΆνλ©΄ ν¨μ μ½λκ° νκ°λμ΄ ν¨μ μ€ν 컨ν μ€νΈκ° μμ±λκ³ , μ΄λ μ½μ€νμ νΈμ¬λκ³ ν¨μ μ½λκ° μ€νλ©λλ€. ν¨μ μ½λμ μ€νμ΄ μ’ λ£λλ©΄ ν¨μ μ€ν 컨ν μ€νΈλ μ½μ€νμμ νλμ΄ μ κ±° λ©λλ€.
μλ°μ€ν¬λ¦½νΈ μμ§μ λ¨ νλμ μ½μ€νμ κ°λλ€. κ·Έλμ ν λ²μ νλμ ν μ€ν¬λ§ μ€ν ν μ μλ μ±κΈ μ€λ λ λ°©μμΌλ‘ λμν©λλ€.
μ±κΈ μ€λ λ λ°©μμ ν λ²μ νλμ ν μ€ν¬λ§ μ€νν μ μκΈ° λλ¬Έμ μ²λ¦¬μ μκ°μ΄ 걸리λ ν μ€ν¬λ₯Ό μ€ννλ κ²½μ° λΈλ‘νΉμ΄ λ°μν©λλ€.
λκΈ° = νμ€ν¬λ₯Ό μμλλ‘ νλμ© μ²λ¦¬νλ―λ‘ μ€ν μμκ° λ³΄μ₯λλ€λ μ₯μ μ΄ μμ§λ§, μμ ν μ€ν¬κ° μ’ λ£ν λκΉμ§ μ΄ν ν μ€ν¬λ€μ΄ λΈλ‘νΉλλ λ¨μ μ΄ μμ΅λλ€.
λΉλκΈ° = νμ¬ μ€ν μ€μΈ ν μ€ν¬κ° μ’ λ£λμ§ μμ μνλΌ ν΄λ λ€μ ν μ€ν¬λ₯Ό 곧λ°λ‘ μ€ννλ λ°©μμ΄λΌ λΈλ‘νΉμ΄ λ°μνμ§ μμ΅λλ€. νμ§λ§ ν μ€ν¬μ μ€ν μμκ° λ³΄μ₯λμ§ μλλ€λ λ¨μ μ΄ μμ΅λλ€.
νμ΄λ¨Έ ν¨μ(setTimeout, setInterval), HTTP μμ², μ΄λ²€νΈ νΈλ€λ¬λ λΉλκΈ° μ²λ¦¬ λ°©μμΌλ‘ λμν©λλ€.
βοΈ μ΄λ²€νΈ 루νμ ν μ€ν¬ ν
μλ°μ€ν¬λ¦½νΈμ λμμ±μ μ§μνλ κ²μ΄ λ°λ‘ μ΄λ²€νΈ 루νμ΄λ€.
* μλ°μ€ν¬λ¦½νΈ μμ§μ ꡬμ±
1. μ½μ€ν
μμ€μ½λ νκ° κ³Όμ μμ μμ±λ μ€ν 컨ν μ€νΈκ° μΆκ°λκ³ μ κ±°λλ μ€ν μλ£κ΅¬μ‘°μ λλ€.
ν¨μ νΈμΆ → ν¨μ μ€ν 컨ν μ€νΈκ° μμ°¨μ μΌλ‘ μ½μ€νμ νΈμ → μ€νλ¨
2. ν
κ°μ²΄κ° μ μ₯λλ λ©λͺ¨λ¦¬ 곡κ°μ λλ€. μ½μ€νμ μμμΈ μ€ν 컨ν μ€νΈλ νμ μ μ₯λ κ°μ²΄λ₯Ό μ°Έμ‘°ν©λλ€.
λΉλκΈ° μ²λ¦¬μμ μμ€μ½λμ νκ°μ μ€νμ μ μΈν λͺ¨λ μ²λ¦¬λ μλ°μ€ν¬λ¦½νΈ μμ§μ ꡬλνλ νκ²½μΈ λΈλΌμ°μ λλ node.jsκ° λ΄λΉν©λλ€. κ·Έλμ ν μ€ν¬ νμ μ΄λ²€νΈ 루νλ₯Ό μ 곡ν©λλ€.
1. ν μ€ν¬ ν
setTimeout, setIntervalμ κ°μ λΉλκΈ° ν¨μμ μ½λ°± ν¨μ λλ μ΄λ²€νΈ νΈλ€λ¬κ° μΌμμ μΌλ‘ 보κ΄λλ μμμ λλ€.
2. μ΄λ²€νΈ 루ν
μ½μ€νμ νμ¬ μ€ν μ€μΈ μ€ν 컨ν μ€νΈκ° μλμ§, κ·Έλ¦¬κ³ ν μ€νμ λκΈ° μ€μΈ ν¨μ(μ½λ°±ν¨μ, μ΄λ²€νΈ νΈλ€λ¬ λ±)κ° μλμ§ λ°λ³΅μ μΌλ‘ νμΈν©λλ€. λ§μ½ μ½μ€νμ΄ λΉμ΄μκ³ ν μ€ν¬ νμ λκΈ° μ€μΈ ν¨μκ° μλ€λ©΄ μ΄λ²€νΈ 루νλ μμ°¨μ μΌλ‘ ν μ€ν¬ νμ λκΈ°μ€μΈ ν¨μλ₯Ό μ½μ€νμΌλ‘ μ΄λμν΅λλ€. μ΄λ μ½μ€νμΌλ‘ μ΄λν ν¨μλ μ€νλ©λλ€.
(ν μ€ν¬ νμ μΌμ 보κ΄λ ν¨μλ€μ λΉλκΈ° μ²λ¦¬ λ°©μμΌλ‘ λμν©λλ€. )
function foo() {
console.log('foo');
}
function bar() {
console.log('bar');
}
setTimeout(foo, 0); // 0μ΄(μ€μ λ 4ms) νμ foo ν¨μκ° νΈμΆλλ€.
bar();
// fooν¨μμ barν¨μ μ€ λ¨Όμ μ€νλλ ν¨μλ bar!!
(setTimeout ν¨μλ‘ νΈμΆ μ€μΌμ€λ§ν μ½λ°± ν¨μλ μ νν μ§μ°μκ° νμ νΈμΆλλ 보μ₯μ΄ μλ€. μ§μ° μκ° μ΄νμ μ½λ°± ν¨μκ° ν μ€ν¬ νμ νΈμλμ λκΈ°νλκ±°κ³ λ°λ‘ μ€νλλκ² μλλ€!!)
π λΉλκΈ° ν¨μμΈ setTimeoutμ μ½λ°± ν¨μλ ν μ€ν¬ νμ νΈμλμ΄ λκΈ°νλ€κ° μ½μ€νμ΄ λΉκ² λλ©΄, μ μ μ½λλ λͺ μμ μΌλ‘ νΈμΆλ ν¨μκ° λͺ¨λ μ’ λ£νλ©΄ λΉλ‘μ μ½μ€νμ νΈμλλ€.
μλ°μ€ν¬λ¦½νΈλ μ±κΈ μ€λ λ λ°©μμΌλ‘ λμν©λλ€.
μ΄λ μ±κΈ μ€λ λ λ°©μμΌλ‘ λμνλ κ²μ λΈλΌμ°μ κ° μλλΌ λΈλΌμ°μ λ΄ μ μ₯λ μλ°μ€ν¬λ¦½νΈ μμ§μ λλ€.
μλ°μ€ν¬λ¦½νΈ μμ§μ μ±κΈ μ€λ λλ‘ λμνμ§λ§ λΈλΌμ°μ λ λ©ν° μ€λ λλ‘ λμν©λλ€.
π©π» λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Diveλ₯Ό μ λ νκ³ μ κ° μ΄ν΄ν λ΄μ©μ μ 리ν κΈμ λλ€ π©π»
'πLanguage > JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Deep Dive] ES6 ν¨μμ μΆκ° κΈ°λ₯ (νμ΄ν ν¨μ, REST νλΌλ―Έν°, 맀κ°λ³μ κΈ°λ³Έκ°) (0) | 2022.12.21 |
---|---|
[Deep Dive] ajax (0) | 2022.12.20 |
[Deep Dive] REST APIκ° λ¬΄μμΈκ°μ? (0) | 2022.12.16 |
[Deep Dive] DOMκ³Ό λ Έλ (0) | 2022.12.15 |
[Deep Dive] λΈλΌμ°μ μ λ λλ§ κ³Όμ (0) | 2022.12.14 |