|
@@ -3,7 +3,6 @@ import { httpApp } from "@/plugins/axiosApp";
|
|
|
import { useTimers } from "@/setups/useTimers";
|
|
|
import { store } from "@/store/store";
|
|
|
import { showLogout } from "@/utils/utils";
|
|
|
-import axios, { Canceler } from "axios";
|
|
|
import moment from "moment";
|
|
|
import { onMounted, onUnmounted, watch } from "vue";
|
|
|
import { useRoute } from "vue-router";
|
|
@@ -61,10 +60,10 @@ onMounted(async () => {
|
|
|
});
|
|
|
|
|
|
// 离开此页面时,可能还有心跳请求未返回
|
|
|
-onUnmounted(() => cancelHeartBeat && cancelHeartBeat());
|
|
|
+onUnmounted(() => cancelHeartBeat && cancelHeartBeat.abort());
|
|
|
|
|
|
let handledNetworkException = false;
|
|
|
-let cancelHeartBeat: Canceler;
|
|
|
+let cancelHeartBeat: AbortController;
|
|
|
async function getRemainTimeFromServer() {
|
|
|
if (store.exam.remainTime <= 0 && store.exam.isSubmittingPaper) {
|
|
|
logger({
|
|
@@ -79,6 +78,7 @@ async function getRemainTimeFromServer() {
|
|
|
}
|
|
|
try {
|
|
|
logger({ cnl: ["server"], act: "发出心跳" });
|
|
|
+ cancelHeartBeat = new AbortController();
|
|
|
const res = await httpApp.get(
|
|
|
"/api/ecs_oe_student/examControl/examHeartbeat",
|
|
|
{
|
|
@@ -87,7 +87,7 @@ async function getRemainTimeFromServer() {
|
|
|
retryDelay: () => 10 * 1000,
|
|
|
},
|
|
|
noErrorMessage: true,
|
|
|
- cancelToken: new axios.CancelToken((c) => (cancelHeartBeat = c)),
|
|
|
+ signal: cancelHeartBeat.signal,
|
|
|
}
|
|
|
);
|
|
|
const rt: number = res.data;
|