Explorar o código

网络错误处理代码块多次进入的问题

Michael Wang %!s(int64=3) %!d(string=hai) anos
pai
achega
033dc0840c
Modificáronse 1 ficheiros con 4 adicións e 0 borrados
  1. 4 0
      src/features/OnlineExam/Examing/RemainTime.vue

+ 4 - 0
src/features/OnlineExam/Examing/RemainTime.vue

@@ -63,6 +63,7 @@ onMounted(async () => {
 // 离开此页面时,可能还有心跳请求未返回
 onUnmounted(() => cancelHeartBeat && cancelHeartBeat());
 
+let handledNetworkException = false;
 let cancelHeartBeat: Canceler;
 async function getRemainTimeFromServer() {
   if (store.exam.remainTime <= 0) {
@@ -102,6 +103,9 @@ async function getRemainTimeFromServer() {
     });
     remainTime = rt;
   } catch (error) {
+    if (handledNetworkException) return;
+    // 如果不处理,由于心跳请求有多次,延迟下来,可能有多次心跳请求的错误处理会进下面
+    handledNetworkException = true;
     const descMaybe: string | undefined = (error as any).response?.data?.desc;
     if (descMaybe) {
       $message.error(descMaybe);