λκΈ° μ²λ¦¬μ λΉλκΈ° μ²λ¦¬
μλ°μ€ν¬λ¦½νΈ μμ§μ ν λ²μ νλμ νμ€ν¬λ§ μ€νν μ μλ μ±κΈ μ€λ λ λ°©μμΌλ‘ λμνλ€. μ±κΈ μ€λ λ λ°©μμ ν λ²μ νλμ νμ€ν¬λ§ μ€νν μ μκΈ° λλ¬Έμ μ²λ¦¬μ μκ°μ΄ 걸리λ νμ€ν¬λ₯Ό μ€ννλ κ²½μ° λΈλ‘νΉ(μμ μ€λ¨)μ΄ λ°μνλ€. νμ¬ μ€ν μ€μΈ νμ€ν¬κ° μ’ λ£ν λκΉμ§ λ€μμ μ€νλ νμ€ν¬κ° λκΈ°νλ λ°©μμ λκΈ° μ²λ¦¬λΌκ³ νλ€.
setTimeout ν¨μλ μΌμ μκ°μ΄ κ²½κ³Όν μ΄νμ μ½λ°± ν¨μλ₯Ό νΈμΆνμ§λ§ setTimeout μ΄νμ νμ€ν¬λ₯Ό λΈλ‘νΉνμ§ μκ³ κ³§λ°λ‘ μ€ννλ€. νμ¬ μ€ν μ€μΈ νμ€ν¬κ° μ’ λ£λμ§ μμ μνλΌ ν΄λ λ€μ νμ€ν¬λ₯Ό 곧λ°λ‘ μ€ννλ λ°©μμ λΉλκΈ° μ²λ¦¬λΌκ³ νλ€. setTimeoutκ³Ό setInterval, HTTPμμ², μ΄λ²€νΈ νΈλ€λ¬λ λΉλκΈ° μ²λ¦¬ λ°©μμΌλ‘ λμνλ€.
setTimeout(() => console.log("setTimeout"), 1000);
console.log("test");
// console
// setTimeout (1μ΄ ν)
μ΄λ²€νΈ 루νμ νμ€ν¬ ν
μ±κΈ μ€λ λ λ°©μμ ν λ²μ νλμ νμ€ν¬λ§ μ²λ¦¬ν μ μλ€λ κ²μ μλ―Ένλ€. νμ§λ§ λΈλΌμ°μ κ° λμνλ κ²μ μ΄ν΄λ³΄λ©΄ λ§μ νμ€ν¬κ° λμμ μ²λ¦¬λλ κ²μ²λΌ λκ»΄μ§λ€. μ΄μ²λΌ μλ°μ€ν¬λ¦½νΈμ λμμ±μ μ§μνλ κ²μ΄ λ°λ‘ μ΄λ²€νΈ 루νλ€. μ΄λ²€νΈ 루νλ λΈλΌμ°μ μ λ΄μ₯λμ΄ μλ κΈ°λ₯ μ€ νλλ€.
- μ½ μ€ν : μμ€μ½λ νκ° κ³Όμ μμ μμ±λ μ€ν 컨ν μ€νΈκ° μΆκ°λκ³ μ κ±°λλ μ€ν μλ£κ΅¬μ‘°μΈ μ€ν 컨ν μ€νΈ μ€νμ΄ λ°λ‘ μ½ μ€νμ΄λ€. ν¨μλ₯Ό νΈμΆνλ©΄ ν¨μ μ€ν 컨ν μ€νΈκ° μμ°¨μ μΌλ‘ μ½ μ€νμ νΈμλμ΄ μμ°¨μ μΌλ‘ μ€νλλ€. μ΅μμ μ€ν 컨ν μ€νΈ(μ€ν μ€μΈ μ€ν 컨ν μ€νΈ)κ° μ’ λ£λμ΄ μ½ μ€νμμ μ κ±°λκΈ° μ κΉμ§λ λ€λ₯Έ μ΄λ€ νμ€ν¬λ μ€νλμ§ μλλ€.
- ν : κ°μ²΄κ° μ μ₯λλ λ©λͺ¨λ¦¬ 곡κ°μ΄λ€. μ½μ€νμ μμμΈ μ€ν 컨ν μ€νΈλ νμ μ μ₯λ κ°μ²΄λ₯Ό μ°Έμ‘°νλ€.
- νμ€ν¬ ν : λΉλκΈ° ν¨μμ μ½λ°± ν¨μ λλ μ΄λ²€νΈ νΈλ€λ¬κ° μΌμμ μΌλ‘ 보κ΄λλ μμμ΄λ€.
(νμ€ν¬ νμλ λ³λλ‘ νλ‘λ―Έμ€μ νμ μ²λ¦¬ λ©μλμ μ½λ°± ν¨μκ° μΌμμ μΌλ‘ 보κ΄λλ λ§μ΄ν¬λ‘νμ€ν¬ νλ μ‘΄μ¬νλ€.) - μ΄λ²€νΈ 루ν : μ΄λ²€νΈ 루νλ μ½ μ€νμ νμ¬ μ€ν μ€μΈ μ€ν 컨ν μ€νΈκ° μλμ§, κ·Έλ¦¬κ³ νμ€νΈ νμ λκΈ° μ€μΈ ν¨μκ° μλμ§ λ°λ³΅ν΄μ νμΈνλ€. λ§μ½ μ½ μ€νμ΄ λΉμ΄ μκ³ νμ€ν¬ νμ λκΈ° μ€μΈ ν¨μκ° μλ€λ©΄ μ΄λ²€νΈ 루νλ μμ°¨μ μΌλ‘ μ½μ€νμΌλ‘ μ΄λμν¨λ€. μ΄ λ μ½ μ€νμΌλ‘ μ΄λν ν¨μλ μ€νλλ€. μ¦, νμ€ν¬ νμ μΌμ 보κ΄λ ν¨μλ€μ λΉλκΈ° μ²λ¦¬ λ°©μμΌλ‘ λμνλ€.
μ΄μ²λΌ μλ°μ€ν¬λ¦½νΈ μμ§μ λ¨μν νμ€ν¬κ° μμ²λλ©΄ μ½ μ€νμ ν΅ν΄ μμ μ μμ°¨μ μΌλ‘ μ€νν λΏμ΄λ€. λΉλκΈ° μ²λ¦¬μμ μμ€μ½λμ νκ°μ μ€νμ μ μΈν λͺ¨λ μ²λ¦¬λ μλ°μ€ν¬λ¦½νΈ μμ§μ ꡬλνλ νκ²½μΈ λΈλΌμ°μ λλ Node.jsκ° λ΄λΉνλ€. μλ°μ€ν¬λ¦½νΈ μμ§μ μ±κΈ μ€λ λλ‘ λμνμ§λ§ λΈλΌμ°μ λ λ©ν° μ€λ λλ‘ λμνλ€.
function foo() {
console.log("foo");
}
function bar() {
console.log("bar");
}
setTimeout(foo, 0);
bar();
// bar
// foo
λΉλκΈ° ν¨μμΈ setTImeoutμ μ½λ°± ν¨μλ νμ€ν¬ νμ νΈμλμ΄ λκΈ°νλ€κ° μ½ μ€νμ΄ λΉκ² λλ©΄, λ€μ λ§ν΄ μ μ μ½λ λ° λͺ μμ μΌλ‘ νΈμΆλ ν¨μκ° λͺ¨λ μ’ λ£νλ©΄ λΉλ‘μ μ½ μ€νμ νΈμλμ΄ μ€νλλ€.