diff --git a/src/components/platform-entry/usePlatformProfileCenterController.ts b/src/components/platform-entry/usePlatformProfileCenterController.ts index 5ae54d6f8..a5a7bfba5 100644 --- a/src/components/platform-entry/usePlatformProfileCenterController.ts +++ b/src/components/platform-entry/usePlatformProfileCenterController.ts @@ -443,6 +443,7 @@ export function usePlatformProfileCenterController({ const confirmingWechatRechargeOrderRef = useRef(null); const rechargeSubmissionRef = useRef(null); + const membershipQuoteRequestRef = useRef(null); const accountWriteAbortControllerRef = useRef(new AbortController()); const rechargeCenterReadRevisionRef = useRef(0); const accountLifecycleRevisionRef = useRef(0); @@ -1356,6 +1357,11 @@ export function usePlatformProfileCenterController({ ) { return; } + const requestToken = Symbol('profile-membership-quote'); + membershipQuoteRequestRef.current = requestToken; + const isLatestQuoteRequest = () => + isAccountLifecycleCurrent(account) && + membershipQuoteRequestRef.current === requestToken; setMembershipQuote(null); setMembershipQuoteError(null); setIsLoadingMembershipQuote(true); @@ -1363,13 +1369,13 @@ export function usePlatformProfileCenterController({ signal: requestSignal, }) .then((quote) => { - if (!isAccountLifecycleCurrent(account)) { + if (!isLatestQuoteRequest()) { return; } setMembershipQuote(quote); }) .catch((error: unknown) => { - if (!isAccountLifecycleCurrent(account)) { + if (!isLatestQuoteRequest()) { return; } setMembershipQuoteError( @@ -1377,7 +1383,7 @@ export function usePlatformProfileCenterController({ ); }) .finally(() => { - if (isAccountLifecycleCurrent(account)) { + if (isLatestQuoteRequest()) { setIsLoadingMembershipQuote(false); } });