From 7887ca64300b99ab7e9737eb96918a60b3390779 Mon Sep 17 00:00:00 2001 From: seorinn Date: Mon, 11 May 2026 15:22:33 +0900 Subject: [PATCH 1/2] =?UTF-8?q?perf:=20[TA-179]=20=EB=B3=91=EB=A0=AC=20API?= =?UTF-8?q?=20=ED=98=B8=EC=B6=9C=EB=A1=9C=20MyPage=20=EB=A1=9C=EB=94=A9=20?= =?UTF-8?q?=EC=84=B1=EB=8A=A5=20=EA=B0=9C=EC=84=A0=20(Promise.all)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/MyPage/index.tsx | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/pages/MyPage/index.tsx b/src/pages/MyPage/index.tsx index 64dc6b9..25c2cd4 100644 --- a/src/pages/MyPage/index.tsx +++ b/src/pages/MyPage/index.tsx @@ -29,13 +29,12 @@ export default function MyPage() { useEffect(() => { const fetchUserInfo = async () => { try { - const res = - role === "USER" - ? await getUserInfo() - : await getPhotographerInfo(user.id); + const [res, promotions, photographers] = await Promise.all([ + role === "USER" ? getUserInfo() : getPhotographerInfo(user.id), + getSavedPromotionList(), + getSavedPhotographerList(), + ]); setUserInfo(res); - const promotions = await getSavedPromotionList(); - const photographers = await getSavedPhotographerList(); setSavedPromotions(promotions.items); setSavedPhotographers(photographers.items); } catch (e) { From fc8160d0831596aa1620373da35aed80fc07e115 Mon Sep 17 00:00:00 2001 From: seorinn Date: Mon, 11 May 2026 15:24:45 +0900 Subject: [PATCH 2/2] =?UTF-8?q?perf:=20[TA-179]=20Promise.allSettled=20+?= =?UTF-8?q?=20cleanup=EC=9C=BC=EB=A1=9C=20=EC=97=90=EB=9F=AC=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=20=EB=B0=8F=20stale=20request=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/MyPage/index.tsx | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/pages/MyPage/index.tsx b/src/pages/MyPage/index.tsx index 25c2cd4..627de1d 100644 --- a/src/pages/MyPage/index.tsx +++ b/src/pages/MyPage/index.tsx @@ -27,21 +27,31 @@ export default function MyPage() { const role = user.roles.includes("PHOTOGRAPHER") ? "PHOTOGRAPHER" : "USER"; useEffect(() => { + let ignore = false; const fetchUserInfo = async () => { - try { - const [res, promotions, photographers] = await Promise.all([ + const [resResult, promotionsResult, photographersResult] = + await Promise.allSettled([ role === "USER" ? getUserInfo() : getPhotographerInfo(user.id), getSavedPromotionList(), getSavedPhotographerList(), ]); - setUserInfo(res); - setSavedPromotions(promotions.items); - setSavedPhotographers(photographers.items); - } catch (e) { - console.log(e); + if (ignore) return; + if (resResult.status === "fulfilled") { + setUserInfo(resResult.value); + } else { + console.error("Failed to load user profile", resResult.reason); + } + if (promotionsResult.status === "fulfilled") { + setSavedPromotions(promotionsResult.value.items); + } + if (photographersResult.status === "fulfilled") { + setSavedPhotographers(photographersResult.value.items); } }; fetchUserInfo(); + return () => { + ignore = true; + }; }, [role, user.id]); if (!userInfo) return <>;