22.09.01 μ¬λ¬ μλ£λ₯Ό μ°Ύμ보며 곡λΆν λ΄μ©λ€μ μ 리νμμ΅λλ€ π
νΌλλ°±μ μΈμ λ νμμ λλ€! π
setTimeout
μ λ¬΄μ¨ μν μ νλκ°? setTimeout
μ μ½λ°± ν¨μλ₯Ό νΈμΆνμ§ μμ. ν¨μλ₯Ό νΈμΆνλ€λ κ²μ νμ€ν¬ νμμ μ½ μ€νμΌλ‘ λ겨주λ κ²μ μλ―Ένλλ°, μ΄ κ³Όμ μ λΈλΌμ°μ μ μ΄λ²€νΈ 루νκ° μνν¨. λΈλΌμ°μ μκ² λ λ²μ§Έ μΈμ(μκ°)μ μ λ¬νλ©΄μ, κ·Έ μκ°μ΄ κ²½κ³Όνλ©΄ 첫 λ²μ§Έ μΈμ(μ½λ°± ν¨μ)λ₯Ό νΈμΆν΄λ¬λΌκ³ μ λ¬νκ³ μ’
λ£λ¨setTimeout
μ΄ νΈμΆλμμ λ μκ°βμΌλ‘ νλ¨ν¨.setTimeout
μ΄ μ§μ° μκ° λμ μ½ μ€νμ λ€μ΄κ° μμΌλ©΄ μ§μ° μκ° λμ μ무κ²λ νμ§ λͺ»νλ λΈλ‘νΉ λ°μ μ΄λ₯Ό ν΄κ²°νκΈ° μν΄(λΉλκΈ°λ₯Ό μ²λ¦¬νκΈ° μν΄) νΈμΆμ μμνλ κ²setTimeout
μ μ§μ° μκ°μ μ°λ¦¬κ° λμ 보μ¬μ§λ μκ°κ³Ό κ°μκ°? Nope! μ€μ°¨κ° λ°μν¨. νμ€ν¬ νλ‘ λ³΄λ΄μ£Όλ μκ°μ΄ λ λ°λ‘ μκΈ° λλ¬Έμ, μ§μ° μκ°μ 1μ΄λ‘ μ€μ ν΄λ μ νν 1μ΄ νμ μ½λ°± ν¨μκ° μ€νλμ§λ μμ.Promise
,Β fetch
Β λ± λ¬΄μμ μ¨μ λΉλκΈ°λ₯Ό μ²λ¦¬νλ κ·Έ κ·Όλ³ΈμΒ XMLHttpRequest
μ β νμ¬λΒ JSON
μ μ¬μ©νμ¬ ν΅μ μ νμ§λ§, μμ μλΒ XML
μ μ¬μ©νκΈ° λλ¬Έμ μ΄λ¦μ΄Β XMLHttpRequest
XMLHttpRequest
λΈλΌμ°μ νκ²½μμλ§ μ¬μ© κ°λ₯ν νΈμ€νΈ κ°μ²΄send
Β λ©μλκ° νμν μ΄μ ? νμ΄λ‘λλ₯Ό μ λ¬νκΈ° μν΄μλΉλκΈ° μ²λ¦¬μ μν μ 보μ κ²°κ³Ό μ 보λ₯Ό κ°μ§κ³ μλ κ°μ²΄λ‘μ, μ½λ°± ν¬μ ν΄κ²°νκΈ° μν 보μ μλ¨μΌλ‘ μ¬μ©ν¨.
μμ±μ ν¨μλ‘ νλ‘λ―Έμ€ κ°μ²΄λ₯Ό λ§λ€κ³ , κ·Έ μμ ν¨μ λ‘μ§μλ€ λΉλκΈ°λ₯Ό μ¬μ©ν¨!
resolve
Β ν¨μκ° νλ μΌ νλ‘λ―Έμ€ κ°μ²΄μ μν μ 보λ₯ΌΒ fullfilled
, λ΄λΆ μ¬λ‘―μΈΒ value
μ μ λ¬λ°μ μΈμ ν λΉν¨reject
Β ν¨μκ° νλ μΌ νλ‘λ―Έμ€ κ°μ²΄μ μν μ 보λ₯ΌΒ rejected
, λ΄λΆ μ¬λ‘―μΈΒ value
μ μ λ¬λ°μ μΈμ ν λΉν¨resolve
μΒ reject
Β μ¬μ©νμ¬ μ½λ°± ν¨μ μ¬μ©νμ§ μκ³ , νλ‘λ―Έμ€ κ°μ²΄λ₯Ό λ°νν μ μμ μλ 리ν΄νκ³ μΆμλ κ²μ HTTP μμ²μ λ°μ΄ν°μΈΒ response
Β κ°μresponse
Β κ°μ μ²λ¦¬νκΈ° μν λ©μλλ‘,Β then
,Β catch
,Β finally
Β μ¬μ©ν μ μμthen
μ μν ? νλ‘λ―Έμ€ κ°μ²΄μ λ΄λΆ μνκ°Β fullfilled
Β λμμ λ μΈμλ‘ μ λ¬ν μ½λ°± ν¨μ νΈμΆ, νΈμΆν λΒ resolve
μ μΈμλ‘ μ λ¬ν κ°μ΄ λμ΄μ΄(νλ‘λ―Έμ€ κ°μ²΄μ value κ°)catch
μ μν ? νλ‘λ―Έμ€ κ°μ²΄μ λ΄λΆ μνκ°Β rejected
Β λμμ λ μΈμλ‘ μ λ¬ν μ½λ°± ν¨μ νΈμΆ, νΈμΆν λΒ reject
μ μΈμλ‘ μ λ¬ν κ°μ΄ λμ΄μ΄! κ·Έλμ νμ μλ¬λ₯Ό μ λ¬ν μ μκ²λ μλ¬λ₯Ό μμ±νμ¬ μ λ¬νλ κ²μ΄ λ°λμ§ν¨μμ°¨μ μΌλ‘ λ©μλλ₯Ό 체μ΄λν μ μλ€λ μ₯μ μ΄ μμ.
μ¦, μλ¬ μ²λ¦¬λ₯Ό ν μ μλ€λ μ₯μ μ΄ μμ§λ§, νλ‘λ―Έμ€λ κ°λ μ±μ΄ μ’μ§λ§μ μμ
μ΄ν°λ¬λΈμ ꡬνμ κ°μννκΈ° μν μ©λμ΄λ©°, λ§μ΄ μ°μ΄μ§ μμ!
async
Β ν¨μμμλΒ await
Β ν€μλλ₯Ό ν΅ν΄ λ°ν κ°λ§ λ°νν΄μΌ ν¨async
Β ν¨μκ° μΈλΆ μνμ μνΈμμ©νλ €λ©΄ μ λλ μ΄ν°λ₯Ό μ¬μ©νλ κ²μ΄ λ°λμ§ν¨await
Β ν€μλ λ€μλ νμ νλ‘λ―Έμ€ κ°μ²΄κ° μμΉν΄μΌ ν¨await
λ νμΒ async
Β λ΄λΆμμλ§ μ¬μ©ν΄μΌ ν¨ λ°μμλ μ¬μ©ν μ μλ κ²μ²λΌ λ§λ€λ €λ©΄ μ¦μ μ€ν ν¨μλ‘ κ°μΈμΒ Β async
Β λ΄λΆμμ μ¬μ©ν΄μΌ ν¨await
λ₯Ό μ¬μ©νλ©΄ μ ν΅μ μΈ μ½λ© λ°©μμμ ν¬κ² λ²μ΄λμ§ μκΈ° λλ¬Έμ κ°λ
μ±μ΄ μ’μ await
Β λ€μλΒ resolve
Β μ²λ¦¬νμ λμ κ²°κ³Ό κ°μ΄ νλ‘λ―Έμ€ κ°μ²΄λ‘μ μ λ¬λλ κ²μ΄κ³ , catch
 ꡬ문μ 맀κ°λ³μλ‘Β reject
Β μ²λ¦¬νμ λμ κ²°κ³Ό κ°(μλ¬)μ΄ μ λ¬λ¨!μλ¬λ μ΄λ»κ²λ λ°μν μλ°μ μκ³ , μ΄λ₯Ό 빨리 κ³ μΉλ κ²μ΄ ν΄κ²°μ± μ. κ·Έλ¬κΈ° μν΄μλ μλ¬λ₯Ό 빨리 κ°μ§ν΄μΌ ν¨!
λ°κ²¬ν μλ¬λ μλ²μ λ‘κ·Έ νμΌμ μ μ΄λμ΄μΌ ν¨. μ€λ¬΄μμ μλ¬ μ²λ¦¬λ κ΅μ₯ν μ κ²½μ¨μΌ νλ λΆλΆμ.
μμ λ 벨μμ μλ¬λ₯Ό μ²λ¦¬νκΈ° μν΄μλ Caller(νΈμΆμ)λ‘ μλ¬κ° μ νλμ΄μΌ ν¨
μ°λ¦¬κ° νΈμΆνμΌλ©΄ μ°λ¦¬κ° νΈμΆν μͺ½μΌλ‘ μλ¬κ° μ νλμ§λ§, μ°λ¦¬κ° νΈμΆνμ§ μλ λΉλκΈ° ν¨μ κ°μ κ²½μ°λ μλ¬κ° μμ€λ¨!