November 10, 2020
μλ²μμ 1μ΄ μ λ λ€μ μ«μλ₯Ό λ°μμ€λ μλ‘μ΄ Promise λ₯Ό λ§λ€μ΄ 보μ.
const fetchNumber = new Promise((resolve, reject) => {
setTimeout(() => resolve(1), 1000)
})
λ€μ λ³΅μ΅ νμ.
Promise μ μΈμμ executor λΌλ callback ν¨μλ₯Ό μ λ¬νλ€. κ·Έλ°λ° executor λ resolve μ reject λΌλ μ½λ°±ν¨μλ₯Ό λ°λλ€.
μμ μμ μ²λΌ Producer λ₯Ό λ§λ€μμΌλ μλΉ ν΄λ³΄μ.
.then μ μ¬μ©μ λ°λΌ μ΅μ’ μ«μκ° μ΄λ»κ² μΆλ ₯λλ ν΄λ³΄μ.
fetchNumber
.then(num => num * 2)
.then(num => num * 3)
.then(num => {
return new Promise((resolve, reject) => {
setTimeout(() => resolve(num - 1), 1000)
})
})
.then(num => console.log('μ΅μ’
μ«μ num μ κ°μ : ', num))
μ΄ λν© 1 + 1 = 2μ΄ λ€ 5λΌλ κ°μ μΆλ ₯ν΄ μ£Όμλ€.
new Promise λ‘ λ§λ€μ΄μ§ κ°μ²΄ fetchNumber κ° μ±κ³΅μ μΌλ‘ λμμ΄ λλ©΄,
.then μ ν΅ν΄ resolve μ 1μ num μΌλ‘ λ°μμμ μλ‘μ΄ κ°μ 리ν΄νκΈ° μμνλ€.
κ·Έλ¬λ€κ° κ·Έ μ«μλ₯Ό λ€λ₯Έ Server μ 보λ΄μ λ€λ₯Έ μ«μλ‘ λ³νλ κ°μ λ°μμ¬ κ±°λ€.
μμ²λΌ λ€λ₯Έ μλ²μ ν΅μ μ νλ μλ‘μ΄ νλ‘λ―Έμ€λ₯Ό 리ν΄νλ€.