// settimeout : μ€νν ν¨μ, μ΄(λ°λ¦¬μΈμ»¨ λ¨μ)
[callback]
μ½λ°±ν¨μ : κ°λ¨νκ² λ€λ₯Έ ν¨μμ 맀κ°λ³μλ‘ λκ²¨μ€ ν¨μλ₯Ό μλ―Έ
맀κ°λ³μλ‘ λ겨λ°μ ν¨μλ μΌλ¨ 맀κ°λ³μ λ¨Όμ λ겨λ°μλ μνμμ
μΌμ μμ (λ)κ° λλ©΄ λμ€μ νΈμΆ(call back)νλ€λ μλ―Έ
// μ½λ°±ν¨μκ° νμν μ΄μ
1. λ³μμ μ ν¨λ²μ (scope)
2. λκΈ°/λΉλκΈ°(synchronous/Asynchronous)
-> μ΄λ° κ±Έ μν΄μ ν¨μλ₯Ό νμ©νλ νλμ λ°©λ²λ‘ μ μΈ λΆλΆ
μ μ©νλ°.. λ΄κ° a~zκΉμ§ console μ°λ νμλ₯Ό μ μ΄νκ³ μΆμΌλ©΄ μ½λκ° λ무 볡μ‘ν΄μ§λ€..
-> Callback Hell
-- μμ±μ μ
μ₯μμλ ν¬κ² λ¬Έμ κ° μλ μλ μμΌλ μ΄κ±Έ μΆνμ λκ΅°κ° μ μ§λ³΄μ νλ€κ³ μκ°νλ©΄?
hell μ΄λ€.. κ·Έλμ callback hell
μ¬λ¬λ² νμνλ° μ¬λ¬λ² μ°λ©΄ κ°λ
μ± + μ μ§λ³΄μμ±μ΄ λ¨μ΄μ§λ νμλ₯Ό λ§κΈ° μν΄μ λνλκ² promise
[promise]
λΉλκΈ° μ²λ¦¬λ₯Ό μν νλμ ν¨ν΄. callback ν¨μλ₯Ό μ¬μ©νκ² λλ€.
es6 λΆν° μ μ©λ κ°λ
μ ν΅μ μΈ callback ν¨ν΄μ΄ κ°μ§λ λ¨μ (ex callback hell, μλ¬μ²λ¦¬ νλ¬) μ 보μνλ©΄μ
λΉλκΈ° μ²λ¦¬ μμ μ λͺ
ννκ² ννν μ μκ² ν΄μ€λ€.
resolve μ reject // ν΄κ²°νλ€. κ±°μ νλ€. μνκ°μΌλ‘ μκ°νλ©΄ λλ€.
---
promise all
-> μ¬λ¬ κ°μ promise λ€μ λΉλκΈ°μ μΌλ‘ μ€ννμ¬ μ²λ¦¬ν μ μλ..
[basicChaining]
- getDataFromFilePromiseλ₯Ό μ΄μ©ν΄μ νμ΄μΌ ν©λλ€ // 2λ² λ¬Έμ μμ export ν΄μ€¬λ κ±° κ·Έκ±° μ΄μ©ν΄λΌ
1. fs λͺ¨λμ μ§μ μ¬μ©νλ κ²μ΄ μλλλ€.
// λκ° κ°μ μ μΌλ‘ λΆλ¬μμΌ νλ λ― ?
2. getDataFromFilePromiseλ₯Ό μ΄μ©ν΄, 'files/user1.json' νμΌκ³Ό 'files/user2.json' νμΌμ λΆλ¬μ€κ³ ,
λ νμΌμ ν©μ³μ μ΅μ’
μ μΌλ‘ λ κ°μ²΄κ° λ΄κΈ΄ λ°°μ΄μ λ§λλ κ²μ΄ λͺ©νμ
λλ€.
// μ΄λ€ μ΄κΈ° λ°°μ΄ λ§λ€μ΄μ push ν΄μ£Όλ©΄ λμ§ μμκΉ?
3. νμΌ κ²½λ‘λ₯Ό μ°Ύμ λ, user1Path λ° user2Pathλ₯Ό μ΄μ©νμΈμ.
// κΈ°λ³Έμ μΌλ‘ μμ±λμ΄ μλ λ³μ? νμ© ν΄μ£ΌμΈμ
4. thenμ΄ μ΄λ€ 맀κ°λ³μλ₯Ό μ λ¬λ°λμ§μ λν μ΄ν΄κ° μμ΄μΌ ν©λλ€.
// then μ value κ°μ λ°μμ¬κ±°λ€...
5. thenμ 리ν΄μ΄ 무μμ μλ―Ένλμ§ μ΄ν΄νκ³ μμ΄μΌ ν©λλ€.
// κ°κ³΅μ΄ νμν λ°μ΄ν°λ‘ κ°μ§κ³ μ¨λ€. κ·Έλμ μ¬μ©νλ €λ©΄ json νμ±μ ν΄μ€μΌ νλ€.
6. νμΌ μ½κΈ°μ κ²°κ³Όκ° λ¬Έμμ΄μ΄λ―λ‘, JSON.parseλ₯Ό μ¬μ©ν΄μΌ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ΅λλ€.
// json.parse(value)