- 그동한 작성한 코드를 가지고 현업 개발자분에게 코드 리뷰를 받았고, 지적받은 사항이였던 일관성 있는 Promise 사용을 위해 then chaining을 async, await으로 바꾸는 작업을 진행했다.
- 상품 상세 페이지에 사용했던 코드를 예시로 가져와서 어떻게 코드를 수정했는지 살펴보겠다.
다시 봐도 이상한 것 같다. 분명 async/await문법을 활용하여 비동기식을 작성했는데, then으로 받고 then chaning을 이어가는게 어색하다. then chaining 자체가 나쁘다기보단 then chaining으로 받을거면 차라리 async/await이 아닌 Promise객체를 구성해서 하는게 자연스러웠을 것 같다.
아래와 같은 이유로 나는 async/await으로 코드를 다시 작성해보려고 한다.
async function setData() {
try {
const res = await fetch('../itemList/data.json'); // tempData
const itemList = await res.json();
return itemList[0];
} catch (err) {
console.error(err);
}
}
..(생략)..
setData()
.then((res) => {
const {oid, brand, name, price, img} = res;
$itemInfoSection.insertAdjacentHTML(
..(생략)..
return document;
})
..(생략)..
.then((doc) => {
quantityControlBox(doc);
});
async function setData() { // get Data
try {
const itemList = await Api.get('/api/product/list', `${params}`);
return itemList;
} catch (err) {
console.error(err);
}
}
async function createItemInfoElements() { // create HTML
try {
const res = await setData();
const {shortId, manufacturer, prod_title, price, img, description} = res;
$itemInfoSection.insertAdjacentHTML(
..(생략)..
);
return document;
} catch (err) {
console.error(err);
}
}
async function addquantityControlEvent() { // add Event
await createItemInfoElements(); // 수량 조절 버튼 모듈
quantityControlBox(document);
const $itemInfoCart = document.getElementById('itemInfo_cart'); // 장바구니 버튼
const $itemInfoBuyNow = document.getElementById('itemInfo_buyNow'); // 바로구매 버튼