π₯ λκΈ° μ²λ¦¬μ λΉλκΈ° μ²λ¦¬
- μλ°μ€ν¬λ¦½νΈ μμ§μ λ¨ νλμ μ€ν 컨ν
μ€νΈ μ€νμ κ°λλ€.
μ¦, μλ°μ€ν¬λ¦½νΈ μμ§μ ν λ²μ νλμ ν μ€ν¬λ§ μ€νν μ μλ μ±κΈ μ€λ λλ°©μμΌλ‘ λμνλ€. - μ±κΈ μ€λ λ λ°©μμ ν λ²μ νλμ ν μ€ν¬λ§ μ€νν μ μκΈ°μ μκ°μ΄ 걸리λ ν μ€ν¬λ₯Ό μ€ννλ κ²½μ° λΈλ‘νΉ(blocking, μμ μ€λ¨)μ΄ λ°μνλ€.
μ±κΈ μ€λ λλ νλ‘μΈμ€ λ΄μμ νλμ λ©μΈμ€λ λλ§μΌλ‘ μμ μ μ²λ¦¬νλ€
// sleep ν¨μλ μΌμ μκ°(delay)μ΄ κ²½κ³Όν μ΄νμ μ½λ°± ν¨μ(func)λ₯Ό νΈμΆνλ€.
function sleep(func, delay) {
// Date.now()λ νμ¬ μκ°μ μ«μ(ms)λ‘ λ°ννλ€.
const delayUntil = Date.now() + delay;
// νμ¬ μκ°μ delayλ₯Ό λν delayUntilμ΄ νμ¬ μκ°λ³΄λ€ μμΌλ©΄ κ³μ λ°λ³΅νλ€.
while (Date.now() < delayUntil);
// μΌμ μκ°μ΄ κ²½κ³Όν μ΄νμ μ½λ°± ν¨μ(func)λ₯Ό νΈμΆνλ€.
func();
}
function foo() {
console.log('foo');
}
function bar() {
console.log('bar');
}
// sleep ν¨μλ 3μ΄ μ΄μ μ€νλλ€.
sleep(foo, 3 * 1000)
// bar ν¨μλ sleep ν¨μμ μ€νμ΄ μ’
λ£λ μ΄νμ νΈμΆλλ―λ‘ 3μ΄ μ΄μ λΈλ‘νΉλλ€.
bar()
// μ¦, 3μ΄ κ²½κ³Ό ν foo νΈμΆ => bar νΈμΆ
μμ²λΌ νμ¬ μ€ν μ€μΈ ν μ€ν¬κ° μ’ λ£ν λκΉμ§ λ€μμ μ€νλ ν μ€ν¬κ° λκΈ°νλ λ°©μμ λκΈ° μ²λ¦¬λΌκ³ νλ€.
π₯ λκΈ° μ²λ¦¬ λ°©μ
- μ₯μ : ν μ€ν¬λ₯Ό μμλλ‘ νλμ© μ²λ¦¬νλ―λ‘ μ€ν μμκ° λ³΄μ₯λλ€.
- λ¨μ : μμ ν μ€ν¬κ° μ’ λ£ν λκΉμ§ μ΄ν ν μ€ν¬λ€μ΄ λΈλ‘νΉλλ€.
function foo() {
console.log('foo');
}
function bar() {
console.log('bar');
}
// νμ΄λ¨Έ ν¨μ setTimeoutμ μΌμ μκ°μ΄ κ²½κ³Όν μ΄νμ μ½λ°± ν¨μ fooλ₯Ό νΈμΆνλ€.
// νμ΄λ¨Έ ν¨μ setTimeoutμ bar ν¨μλ₯Ό λΈλ‘νΉ νμ§ μλλ€.
setTimeout(foo, 3 * 1000);
bar();
// bar νΈμΆ => 3μ΄ λκΈ° ν foo νΈμΆ
setTimeout ν¨μλ μμ μ΄ν΄λ³Έ sleep ν¨μμ μ μ¬νκ² μΌμ μκ°μ΄ κ²½κ³Όν μ΄νμ μ½λ°± ν¨μλ₯Ό νΈμΆνμ§λ§ setTimeout ν¨μ μ΄νμ ν μ€ν¬λ₯Ό λΈλ‘νΉνμ§ μκ³ κ³§λ°λ‘ μ€νλλ€.
μ΄μ²λΌ νμ¬ μ€νμ€μΈ ν
μ€ν¬κ° μ’
λ£λμ§ μμ μνλΌ ν΄λ λ€μ ν
μ€ν¬λ₯Ό κ³§λ°λ‘ μ€ννλ λ°©μμ λΉλκΈ° μ²λ¦¬λΌκ³ νλ€.
- μ₯μ : νμ¬ μ€ν ν μ€ν¬κ° μ’ λ£λμ§ μμ μνλΌλ λ€μ ν μ€ν¬λ₯Ό κ³§λ°λ‘ μ€ννλ―λ‘ λΈλ‘νΉμ΄ λ°μνμ§ μλλ€.
- λ¨μ : ν μ€ν¬μ μ€νμμκ° λ³΄μ₯λμ§ μλλ€.
νμ΄λ¨Έ ν¨μμΈ setTimeoutκ³Ό setInterval, HTTP μμ², μ΄λ²€νΈ νΈλ€λ¬λ λΉλκΈ° μ²λ¦¬ λ°©μμΌλ‘ λμνλ€.
λΉλκΈ° μ²λ¦¬λ₯Ό μννλ λΉλκΈ°ν¨μλ μ ν΅μ μΌλ‘ μ½λ°±ν¨μλ₯Ό μ¬μ©νλ€.
λΉλκΈ° μ²λ¦¬λ₯Ό μν μ½λ°± ν¨ν΄μ μ½λ°± ν¬μ λ°μμμΌ κ°λ μ±μ λμκ²νκ³ ,
λΉλκΈ° μ²λ¦¬ μ€ λ°μν μλ¬μ μμΈμ²λ¦¬κ° κ³€λνλ©°, μ¬λ¬ κ°μ λΉλκΈ° μ²λ¦¬λ₯Ό νλ²μ μ²λ¦¬νλ λ°λ νκ³κ° μλ€.
π₯ μ΄λ²€νΈ 루νμ νμ€ν¬ ν
μλ°μ€ν¬λ¦½νΈλ μμμ λ§νλ―μ΄ μ±κΈ μ€λ λ λ°©μμ΄λ―λ‘ ν λ²μ νλμ νμ€ν¬λ§ μ²λ¦¬νλ€. νμ§λ§ λΈλΌμ°μ κ° λμνλ κ²μ μ΄ν΄λ³΄λ©΄ λ§μ νμ€ν¬κ° λμμ μ²λ¦¬λλ κ²μ²λΌ λκ»΄μ§λ€.
μλ₯Ό λ€μ΄, HTML μμκ° μ λλ©μ΄μ ν¨κ³Όλ₯Ό ν΅ν΄ μμ§μ΄λ©΄μ μ΄λ²€νΈλ₯Ό μ²λ¦¬νκΈ°λ νκ³ , HTTP μμ²μ ν΅ν΄ μλ²λ‘λΆν° λ°μ΄ν°λ₯Ό κ°μ§κ³ μ€λ©΄μ λ λλ§νκΈ°λ νλ€. μ΄μ²λΌ μλ°μ€ν¬λ¦½νΈμ λμμ±μ μ§μνλ κ²μ΄ μ΄λ²€νΈλ£¨νμ΄λ€.
'Elice > Study' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[React] SPA, λΌμ°ν (0) | 2024.03.15 |
---|---|
[JavaScript/React] νλ‘ν νμ (0) | 2024.03.15 |
[React] 리μ‘νΈ λμ μ리 (0) | 2024.03.15 |
[JavaScript] μ€μ½ν (0) | 2024.03.14 |
[JavaScript] class, iterable, μ λλ μ΄ν°, λΌμ΄λΈλ¬λ¦¬μ νλ μμν¬ μ°¨μ΄ (0) | 2024.03.11 |