
λ¬Έμμ΄ λ°°μ΄ μμ μλ urlλ€μ api ν΅μ μ ν΅ν΄ μ»μ κ²°κ³Ό κ°μΌλ‘ λ³ννλ €κ³ mapν¨μλ₯Ό μ¬μ©ν λ Promiseμ κ²°κ³Όκ° pending μνλ‘ λμ€λ μν©μ΄λ€.

map ν¨μμμ μ½λ°± ν¨μμλ async/awaitμ ν΅ν΄ λΉλκΈ°μ μΌλ‘ λμν μ μκ² μ€μ ν΄μ£Όμμ§λ§ map ν¨μλ λκΈ°μ μΌλ‘ μ€ννκΈ° λλ¬Έμ asyncν¨μ λ΄λΆμ awaitλ¬Έμ΄ μ€νλκΈ° μ μ mapν¨μκ° μλ£λκΈ° λλ¬Έμ pending μνμ μ½μμ μΆλ ₯λμλ€.
Promise.all() μ¬μ©νκΈ°π‘
Promise.all()μ΄λ
μν κ°λ₯ν κ°μ²΄μ μ£Όμ΄μ§ λͺ¨λ νλ‘λ―Έμ€κ° μ΄νν ν νΉμ νλ‘λ―Έμ€κ° μ£Όμ΄μ§μ§ μμμ λ μ΄ννλ μ¦μ μ±κ³΅νλ νλ‘λ―Έμ€(resolve)λ₯Ό λ°ννλ€. λ§μ½ μ£Όμ΄μ§ νλ‘λ―Έμ€ μ€ νλλΌλ μ€ν¨ν κ²½μ° λͺ¨λ νλ‘λ―Έμ€κ° μ€ν¨νλ€κ³ νλ¨νλ€.
const posts = await Promise.all(
data?.post.map(async (url) => {
const response = await fetch(
`${protocol}://${hostname}/api/proxy?url=${url}`,
);
const data = await response.json();
return data;
}),
);
νμ§λ§ μ΄λ° λ°©μμΌλ‘ μ¬μ©νλ©΄ dataκ° undefined μΌ κ²½μ° μ΅μ
λ 체μ΄λ(?.)μ μν΄ nullμ λ°ννκΈ° λλ¬Έμ μνν μ μμ΄ ts μλ¬κ° λ°μνλ€.
μ΄ νΈμΆκ³Ό μΌμΉνλ μ€λ²λ‘λκ° μμ΅λλ€.
μ€λ²λ‘λ 1/2('(values: readonly unknown[] | []): Promise<[] | unknown[]>')μμ λ€μ μ€λ₯κ° λ°μνμ΅λλ€.
'Promise<any>[] | undefined' νμμ μΈμλ 'readonly unknown[] | []' νμμ λ§€κ° λ³μμ ν λΉλ μ μμ΅λλ€.
'undefined' νμμ 'readonly unknown[] | []' νμμ ν λΉν μ μμ΅λλ€.
μ€λ²λ‘λ 2/2('(values: Iterable<any>): Promise<any[]>')μμ λ€μ μ€λ₯κ° λ°μνμ΅λλ€.
'Promise<any>[] | undefined' νμμ μΈμλ 'Iterable<any>' νμμ λ§€κ° λ³μμ ν λΉλ μ μμ΅λλ€.
'undefined' νμμ 'Iterable<any>' νμμ ν λΉν μ μμ΅λλ€.
1. ifλ¬Έ μ¬μ©νμ¬ ν΄κ²°νκΈ°
if (!data) {
return;
}
const posts = await Promise.all(
data.post.map(async (url) => {
const response = await fetch(`${protocol}://${hostname}/api/proxy?url=${url}`);
const data = await response.json();
return data;
}),
);
2. Nullish Coalescing μ°μ°μ(??) μ¬μ©νμ¬ ν΄κ²°νκΈ°
const posts = await Promise.all(
(data?.post ?? []).map(async (url) => {
const response = await fetch(`${protocol}://${hostname}/api/proxy?url=${url}`);
const data = await response.json();
return data;
}),
);
μμ κ°μ λ°©λ²λ€μ νμ©ν΄μ data μλ€λ κ²μ 보μ₯νκ±°λ μμ κ²½μ°λ₯Ό λμ²νλ©΄ ν΄κ²°ν μ μλ€.
Array.prototype.map() - MDN λ¬Έμ
Promise.all() - MDN λ¬Έμ