ππ»ββοΈ"리μ‘νΈ νλ‘μ νΈλ₯Ό μ§ννλ€κ° ν΅μ μ ν λ λ°λ³΅μ μΌλ‘ ν¨μΉμ ν λκ° μμ΅λλ€."
μ’ λ ν¨μ¨μ μΈ λ°©λ²μ΄ μμκΉ κ³ λ €νλ€κ° JSμ Primise.allμ ν΅ν΄ λ°λ³΅λ μ½λμ μμ μ€μ΄λ λ°©λ²μ μ¬μ©ν΄ 보μμ΄μ.
νΉν, μ€μ νλ‘μ νΈμμ Promiseμ async
μ await
λ₯Ό λ¨μ©νμ¬ λ³λͺ©νμμ΄ μκΈΈ μ μλ€κ³ νμ¬ λ΄κ° μμ±ν μ½λλ κ°μ μ΄ νμνλ€λ κ²μ λκΌμ΅λλ€.
ν루λμ 곡λΆν λ΄μ©μ ν λλ‘ κ°λ¨ν μ€λͺ νκ² μ΅λλ€.
Primise.all() λ©μλλ μν κ°λ₯ν κ°μ²΄μ μ£Όμ΄μ§ λͺ¨λ νλ‘λ―Έμ€κ° μ΄νλ ν, νΉμ νλ‘λ―Έμ€κ° μ£Όμ΄μ§μ§ μμμ λ μ΄ννλ Primiseλ₯Ό λ°ννλ€.
μ£Όμ΄μ§ νλ‘λ―Έμ€ μ€ νλκ° κ±°λΆνκ±°λ, 첫 λ²μ§Έλ‘ κ±°μ ν νλ‘λ―Έμ€μ μ΄μ λ₯Ό μ¬μ©ν΄ μμ λ κ±°λΆνλ€.
Promise.allμ νλΌλ―Έν°λ‘ λ°°μ΄μ λ°λλ€. λ°λΌμ λͺ¨λ μμκ° νλ‘λ―Έμ€ κ°μ²΄μ΄κ±°λ νλ‘λ―Έμ€ κ°μ²΄κ° ν¬ν¨λ λ°°μ΄μ μΈμλ‘ λ£μ΄μ€λ€.
Promiseλ λ§ κ·Έλλ‘ νλλΌλ κ±°λΆλλ©΄ Promise.all
μ μ¦μ κ±°λΆλλ€.
Promise
μμ μλ APIλ₯Ό νμ©νλ λ°©μμ΄λ€. Promise λ°°μ΄μ μ λ¬νκ² λλ©΄ λͺ¨λ Promiseλ€μ΄ λ³λ ¬μ μΌλ‘ μ²λ¦¬κ° λμ νκΊΌλ²μ λͺ¨μμ£Όλ μν μ νλ€.
const urls = [
'http://localhost:3000/data/productListData1.json',
'http://localhost:3000/data/productListData2.json',
'http://localhost:3000/data/productListData3.json',
];
const requests = urls.map(url => fetch(url));
Promise.all(requests)
.then(responses => Promise.all(responses.map(res => res.json())))
.then(res =>
res.forEach(res => {
this.setState({ cardList: this.state.cardList.concat([res]) });
})
);
componentDidMount() {
const urls = [
'http://localhost:3000/data/productListData1.json',
'http://localhost:3000/data/productListData2.json',
'http://localhost:3000/data/productListData3.json',
];
const requests = urls.map(url => fetch(url));
Promise.all(requests)
.then(responses => Promise.all(responses.map(res => res.json())))
.then(response =>
this.setState({
cardList: response[0],
cardList1: response[1],
cardList2: response[2],
})
);
}
Promise.all()
μ μ°λ κ²μ μ’μ§λ§, λ°°μ΄ μ€ νλλΌλ μλ¬κ° λ°μνλ©΄ μ μ²΄κ° κ±°λΆλκΈ° λλ¬Έμ κΌΌκΌΌν μ΄ν΄λ΄μΌ νλ€.