Promiseλ μλ°μ€ν¬λ¦½νΈμμ λΉλκΈ° μ²λ¦¬μμ μ¬μ©λλ κ°μ²΄μ΄λ€.
μ¦, μλ²μμ λ°μμ¨ λ°μ΄ν°λ₯Ό νλ©΄μ νμν λ λ°μ΄ν°λ₯Ό λ°μμ€κΈ°λ μ μ νλ©΄μ΄ κ·Έλ €μ Έ μ€λ₯κ° λ°μνκ±°λ λΉ νλ©΄μ΄ λ¨κ² λλλ°
μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν λ°©λ² μ€ νλμ΄λ€.
νλ‘λ―Έμ€μλ μΈ κ°μ§ μν(μ²λ¦¬κ³Όμ )κ° μλ€.
- Pending(λκΈ°): λΉλκΈ° μ²λ¦¬ λ‘μ§μ΄ μμ§ μλ£λμ§ μμ μν
- Fulfilled(μ΄ν): λΉλκΈ° μ²λ¦¬κ° μλ£λμ΄ νλ‘λ―Έμ€κ° κ²°κ³Ό κ°μ λ°νν΄ μ€ μν
- Rejected(μ€ν¨): λΉλκΈ° μ²λ¦¬κ° μ€ν¨νκ±°λ μ€λ₯κ° λ°μν μν
λΉλκΈ° μ²λ¦¬λ₯Ό λ€λ£¨κ³ μΆλ€λ©΄
const promise = new Promise((resolve) => { setTimeout(() => { resolve() }, 1000) })
// Promise promise.then(() => { console.log('λ€μ μμ ') })
const onClickPromise = async () => { const result1 = await new Promise((resolve, reject) => { setTimeout((resolve("3μ΄ ν μ€ν")) => {}, 3000) }) const result2 = await new Promise((resolve, reject) => { setTimeout((resolve("2μ΄ ν μ€ν")) => {}, 2000) }) const result3 = await new Promise((resolve, reject) => { setTimeout((resolve("1μ΄ ν μ€ν")) => {}, 1000) }) };
κ°κ°μ ν¨μμ async-awaitλ₯Ό μ¬μ©νμ¬ κ° μμ μ΄ μμ°¨μ μΌλ‘ μ€νλμ§λ§ λ리λ€.
Promise.all()μ μ¬μ©νλ©΄ λμμ μ€νν μ²λ¦¬λ₯Ό νλ²μ λͺ¨λ λλ΄κ³ λ€μ μμ μ μ€ννλλ‘ λ§λ€ μ μλ€. λ¨Όμ μ²λ¦¬ν΄μΌνλ μμκ° νμ μλ κ²½μ° λΉλκΈ° μμ λ€μ λ³λ ¬λ‘ μ§ννλ κ²μ΄λ€. λ°λΌμ κ° λͺ λ Ήμ μμ°¨μ μΌλ‘ λλ΄λ promiseμ λΉν΄ μ€ν μλκ° λ§€μ° λΉ λ₯΄λ€ !
// Promise.all() const onClickPromiseAll = async () => { const result = await Promise.all([ setTimeout((resolve("3μ΄ ν μ€ν")) => {}, 3000) setTimeout((resolve("2μ΄ ν μ€ν")) => {}, 2000) setTimeout((resolve("1μ΄ ν μ€ν")) => {}, 1000) ]) };
Promise.all()μ μ¬μ©νμ¬ νλ²μ μ¬λ¬ ν¨μλ₯Ό μ€νν λμλ map, for, forEachλ₯Ό μ¬μ©ν μ μλ€.