λκΈ°μ (synchronous) - μ½λκ° μ€νλλ©΄ ν΄λΉ μ½λκ° μλ£λ λκΉμ§ λ€μ μ€μ μ½λ μ€νμ λ§λ κ²μ λκΈ°μ μ΄λΌ νλ€.
μ¬κΈ°μ λ€μ μ½λκ° μ€νλλ κ±Έ λ§λ κ²μ Blocking μ΄λΌ νλ€.
μ΄ λκΈ°μ μΈ νλ¦κ³Ό λ°λλλ κ°λ μ΄ λΉλκΈ°μ (asynchronous)μ΄λ©° μ½λλ₯Ό λ§μ§ μλ κ²μ non-blockingμ΄λΌ νλ€.
Blocking - μμ²μ λν κ²°κ³Όκ° λμμ μΌμ΄λλ€. => synchronous
Non-Blocking - μμ²μ λν κ²°κ³Όκ° λμμ μΌμ΄λμ§ μλλ€. => asynchronous
μ½λ°±μ μ°κ²°ν λ ν¨μ μ체λ₯Ό μ°κ²°νλ€.( μ€ννλ κ²μ΄ μλ. )
promiseλ μ½λ°± 체μΈμ λ€λ£¨λ λ°©λ²μΌλ‘, ν¨μμ μ½λ°±μ μ λ¬νλ λμ μ μ½λ°±μ 첨λΆνλ λ°©μμ κ°μ²΄μ΄λ€.
ν¨μμ λ°νμ new Promise(resolve, reject)
μ κ°μ μμΌλ‘ λ°ννλ κ²μΌλ‘ μ¬μ©νλ€.
μ½λ°± 체μΈμ μ°κ²°νλ λ°©λ²μ .then(callback)
λ©μλλ₯Ό μ΄μ©νλ λ°©λ²μ΄ μλλ°
new Promiseκ° λ°νλ ν¨μ λ€μμ μμ±ν΄μ€μΌλ‘ λκΈ°μ μΌλ‘ μ€νν μ½λ°±ν¨μ(resolve)λ₯Ό μ§μ ν μ μλ€.
.then
μ μ΄μ©ν λ μ£Όμν μ μ λ°λμ λ°ν κ°μ΄ μμ΄μΌ νλ€λ μ μ΄λ€.
.catch()
κ°μ κ²½μ°λ λ³΄ν΅ μ½λ°± 체μΈμ κ°μ₯ λ§μ§λ§μ μμΉνλλ° .catch
μλ¨μ μνλ μ½λ°±ν¨μμμ μλ¬κ° λ°μν κ²½μ° catchμ μ½λ°±ν¨μλ₯Ό μ€ννκ² λλ€.
.catch()
λ°μ .then()
μ 체μ΄λ ν μ μλ€.
μ€νν μ½λ°±ν¨μμ κΈ°λ€λ¦΄ λ°λ¦¬μ΄λ₯Ό μΈμλ‘ λ°λ APIμ΄λ€.
λ°ν κ°μΌλ‘ μμμ νμ΄λ¨Έ IDλ₯Ό κ°μ§λ©° setTimeout APIλ₯Ό λ³μμ ν λΉνλ κ²μΌλ‘ clearTimeout(setTimeoutμ΄(νμ΄λ¨Έ IDκ°) ν λΉλ λ³μ)
λ‘ ν΄λΉ λ©μλλ₯Ό μ€νμ μ·¨μ μν¬ μ μλ€.
μΌμ μκ° κ°κ²©μ κ°μ§κ³ ν¨μλ₯Ό λ°λ³΅ μ€ννλ APIμ΄λ€.
μ€νν μ½λ°±ν¨μμ μ½λ°±ν¨μλ₯Ό λ°λ³΅ν κ°κ²©μΈ λ°λ¦¬μ΄λ₯Ό μΈμλ‘ λ°λ APIμ΄λ©° λ°ν κ°μΌλ‘ μμμ νμ΄λ¨Έ IDλ₯Ό κ°μ§λ€.
ν΄λΉ API μμ clearInterval(νμ΄λ¨Έ ID)λ‘ λ°λ³΅ μ€νμ€μΈ νμ΄λ¨Έλ₯Ό λ©μΆ μ μλ€.
λ©μλ ꡬνν λ μ½λ°±ν¨μ μλ¦¬λ§ λͺ κΈ°ν΄μ£Όλ©΄ λλ€. ( μ€ννλ κ²μ΄ μλλ€. )
μλ°μ€ν¬λ¦½νΈ μ½λ μ€νμ μ»΄νμΌ μμλλ‘ μ€νλλ μ½λ°±ν¨μλ λΉλκΈ°μ μΌλ‘ μ€νλλ€.