Promise.all vs Promise.allSettled
π Promise.all μ μ¬μ©ν΄μΌ νλ κ²½μ°λ?
νμ¬μμ API νΈμΆ λ‘μ§μ μμ±νλ€κ° λΉλκΈ° λ³λ ¬ μ²λ¦¬λ₯Ό μν΄ λ€μκ³Ό κ°μ΄ μ½λλ₯Ό μμ±νμμ΅λλ€.
try {
await Promise.all([
fetchMySomeDataAsync(),
fetchMyAnotherDataAsync(),
])
// ...
}
λ λΉλκΈ° ν¨μλ₯Ό λ³λ ¬λ‘ μ€ννκ³ μΆμ λ μ μ²λΌ μμ±νλ κ²μ΄ λ§μκΉμ?
λ¬Έμ λ λ€μκ³Ό κ°μ μν©μμ λ°μνμ΅λλ€.
A
μ B
λΌλ ν¨μλ₯Ό λ³λ ¬λ‘ μ€ννμ§λ§,
λ ν¨μ κ°κ°μ μ±κ³΅ λ° μ€ν¨ μ λ¬΄κ° μλ‘ μ°κ΄μ΄ μμ κ²½μ°
Promise.all
μ λ³λ ¬λ‘ μ€νν ν¨μ μ€ μ΄λ νλλΌλ μ€ν¨νλ€λ©΄ error
λ‘ μ²λ¦¬λ©λλ€.
try {
const promise1 = Promise.resolve(1);
const promise2 = new Promise((resolve, reject) => {
setTimeout(() => resolve("resolve"), 7000);
});
const promise3 = new Promise((resolve, reject) => {
setTimeout(() => reject("reject"), 3000);
});
const response = await Promise.all([promise1, promise2, promise3]);
console.log('μ±κ³΅', response)
} catch (err) {
console.error('μλ¬', err)
}
λλ¬Έμ μ€μ λ‘ λ³λ ¬ μ²λ¦¬λλ ν¨μλ€λΌλ¦¬ μλ‘ μ°κ΄μ΄ μλ€λ©΄, Promise.all
λ‘ λ¬Άλ κ²μ
κ°λ°μκ° κΈ°λν κ²κ³Όλ λ€λ₯Έ λ°©μμΌλ‘ λμνκ² λ©λλ€.
λ°λΌμ Promise.all
μ λ€μκ³Ό κ°μ κ²½μ°μ μ¬μ©νλ κ²μ΄ μ’μ΅λλ€.
λ€μ μ½λλ₯Ό μ€ννκΈ° μ μ μλ‘ μ°κ΄λ λΉλκΈ° μμ μ λͺ¨λ μ΄νλμ΄μΌ ν¨μ 보μ₯ν΄μΌνλ κ²½μ°
π Promise.allSettled μ λν΄μ
μ€μ λ‘ μ κ° κΈ°λνλ λμμ Promise.allSettled
λ₯Ό ν΅ν΄ ꡬνν μ μμμ΅λλ€.
ES2020
μμ μλ‘κ² μΆκ°λ μ΄ λΉλκΈ° μ²λ¦¬ λ°©μμ μ£Όλ‘
μλ‘μ μ±κ³΅ μ¬λΆμ κ΄λ ¨μ΄ μλ λΉλκΈ° μμ
λ€μ λ³λ ¬λ‘ μν
ν λ μ¬μ©ν©λλ€.
try {
const promise1 = Promise.resolve(1);
const promise2 = new Promise((resolve, reject) => {
setTimeout(() => resolve("resolve"), 7000);
});
const promise3 = new Promise((resolve, reject) => {
setTimeout(() => reject("reject"), 3000);
});
const response = await Promise.allSettled([promise1, promise2, promise3]);
console.log('μ±κ³΅', response)
} catch (err) {
console.error('μλ¬', err)
}
allSettled
λ κ° λΉλκΈ° νΈμΆλ³λ‘ μλ΅κ²°κ³Όλ₯Ό λ°°μ΄μ λ΄μ λ°νλ°μ΅λλ€.
μ μ½λλ₯Ό μ€ννλ©΄ response
λ‘ λ€μκ³Ό κ°μ μλ΅ κ²°κ³Όλ₯Ό μ»μ μ μμ΅λλ€.
[
{ status: 'fulfilled', value: 1 },
{ status: 'fulfilled', value: 'resolve' },
{ status: 'rejected', reason: 'reject' }
]
status
λ₯Ό ν΅ν΄ νΈμΆμ μ±κ³΅ μ 무λ₯Ό νλ¨ν μ μκ³
μ±κ³΅μμλ value
, μ€ν¨μμλ reason
μΌλ‘ μ΄λ»κ² μ΄ν λλ κ±°λΆλμλμ§ νμΈμ΄ κ°λ₯ν©λλ€.
μ°Έκ³ μλ£
Promise.all() - JavaScript | MDN
Promise.allSettled() - JavaScript | MDN
'π¨βπ» web.dev > js.ts' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[TypeScript] enum κ³Ό union type, μΈμ μ¨μΌν κΉ? (2) | 2022.07.09 |
---|---|
[JavaScript] Array.sort λ μμ μ±μ 보μ₯ν κΉ? (0) | 2022.03.09 |
[TypeScript] js.map νμΌμ 무μμΌκΉ? (0) | 2022.03.07 |
[JavaScript] Object.defineProperty μ λν΄μ (0) | 2022.03.06 |
[JavaScript] μ΅λͺ ν¨μμ κΈ°λͺ ν¨μ, μΈμ μ¨μΌν κΉ? (0) | 2022.02.20 |
π¬ λκΈ