π‘ Promiseμ Async/Await λ°°μ°κΈ° μ μ λκΈ°μ λΉλκΈ° λ°©μμ μ΄ν΄ν΄μΌ ν©λλ€.
λκΈ°(μ§λ ¬μ )λ μμ°¨μ μΌλ‘ μμ
(task)μ μννκ³ μμ²μ λ³΄λΈ λ€μ
μλ΅μ λ°κ³ λμ λ€μ λμμ΄ μ΄λ£¨μ΄μ§λλ€.
μμλλ‘ μμ
μ μννκ³ μ΄λ€ μμ
μ μννκ³ μμΌλ©΄,
κ·Έ μμ
μμκ° μ μΌ μ°μ μ΄ λκ³ νμ¬ μμ
μ΄ μ²λ¦¬λ νμ μμ°¨μ μΌλ‘ μ²λ¦¬ν©λλ€.
λκΈ° λ°©μμ λΈλ‘νΉμ΄ λ°μν©λλ€.

λΉλκΈ°λ νμ¬ μμ
νκ³ μλ λμμ μ²λ¦¬ μ¬λΆμ κ΄κ³μμ΄
λ€μ μμ
μ μ€ννκ² λ©λλ€.
λκΈ° λ°©μκ³Ό λ¬λ¦¬ μ²λ¦¬κ° μλ£λλ μμλ₯Ό 보μ₯νμ§ μμ΅λλ€.
λκΈ° λ°©μμμλ λΈλ‘νΉμ΄ λ°μνμ§λ§, λΉλκΈ° λ°©μμ λΈλ‘νΉμ΄ λ°μνμ§
μμ΅λλ€.

λΉλκΈ° μ²λ¦¬λ₯Ό μν΄ μ½λ°± ν¨μλ₯Ό μ¬μ©νλλ° μ½λ°± ν¨μλ₯Ό λ§μ΄ μ°κ² λλ©΄
κ°λ
μ±μ΄ λλΉ μ§κ³ μλ¬ μ²λ¦¬κ° νλ€μ΄μ§λ μ½λ°± μ§μ₯μ λΉ μ§ μ μκΈ° λλ¬Έμ
μ½λ°± ν¨μμ λ¨μ μ 보μνκΈ° μν΄ ES6λΆν° λμ
λμμ΅λλ€.
μμ±μ ν¨μλ₯Ό ν΅ν΄ μΈμ€ν΄μ€ννκ³ resovleμ reject ν¨μλ₯Ό μΈμλ‘ μ λ¬λ°λ μ½λ°± ν¨μλ₯Ό μΈμλ‘ μ λ¬λ°κ³
μΈμλ‘ μ λ¬λ°μ μ½λ°± ν¨μλ₯Ό λ΄λΆμμ λΉλκΈ° μ²λ¦¬ν©λλ€.
resovle : λΉλκΈ° μ²λ¦¬κ° μ±κ³΅νμλ λ°λ μΈμ
reject : λΉλκΈ° μ²λ¦¬κ° μ€ν¨νμλ λ°λ μΈμ
μλ μμλ promise ν¨μμ index κ°μ λ£κ³ , 10λ³΄λ€ ν¬λ©΄ resovle μΈμλ₯Ό νΈμΆ ν¬μ§ μμΌλ©΄ reject μΈμλ₯Ό νΈμΆνλλ‘ κ΅¬ννμ΅λλ€.
const proAdd = index => { return new Promise((resolve, reject) => { setTimeout(() => { if(index > 10) { reject(`${index}λ 10λ³΄λ€ ν΄ μ μμ΅λλ€`) return } console.log(index) resolve(index + 1) },1000) }) } proAdd(11) .then(res => console.log(res)) .catch(err => console.log(err)) // μΆλ ₯ κ²°κ³Ό : 11λ 10λ³΄λ€ ν΄ μ μμ΅λλ€
promiseμμ λΉλκΈ° μ²λ¦¬μ μ±κ³΅νλμ§ μ€ν¨νλμ§ μν μ λ³΄λ‘ κ°μ§λλ€.
pending : λΉλκΈ° μ²λ¦¬κ° μμ§ μνλμ§ μμ μν
fulfilled : λΉλκΈ° μ²λ¦¬κ° μνλ μν (μ±κ³΅)
rejected : λΉλκΈ° μ²λ¦¬κ° μνλ μν (μ€ν¨)
settled : λΉλκΈ° μ²λ¦¬κ° μνλ μν (μ±κ³΅ λλ μ€ν¨)
then
catch
finally