From fddc248af970d59192f90b7b9828d35935f4f815 Mon Sep 17 00:00:00 2001 From: Miao Wang Date: Tue, 9 Apr 2024 16:17:38 +0800 Subject: [PATCH] rewrite main mirror list with async --- _src/components/MainMirrorList.vue | 41 +++++++++++++++--------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/_src/components/MainMirrorList.vue b/_src/components/MainMirrorList.vue index ada3cd6..3251e9b 100644 --- a/_src/components/MainMirrorList.vue +++ b/_src/components/MainMirrorList.vue @@ -60,30 +60,31 @@ const filteredMirrorList = computed(() => { }); }); -const refreshMirrorList = () => { +const refreshMirrorList = async () => { if (document.hidden === true) { return; } - fetch(TUNASYNC_JSON_PATH) - .then((res) => res.json()) - .then((status_data) => { - const unlisted_mir = unlisted.map((d) => processMirrorItem(d)); - status_data = status_data.map((d) => processMirrorItem(d)); - let mir_data = unlisted_mir.concat(status_data); - mir_data = processLinkItem(mir_data); - status_data = sortAndUniqMirrors(status_data); - mir_data = sortAndUniqMirrors(mir_data).filter( - (d) => !(d.status == "disabled"), - ); - mirrorList.value = mir_data; - rawMirrorList.value = status_data; - }) - .finally(() => { - refreshTimer = setTimeout(refreshMirrorList, 10000); - }); + try{ + const res = await fetch(TUNASYNC_JSON_PATH); + let status_data = await res.json(); + const unlisted_mir = unlisted.map((d) => processMirrorItem(d)); + status_data = status_data.map((d) => processMirrorItem(d)); + let mir_data = unlisted_mir.concat(status_data); + mir_data = processLinkItem(mir_data); + status_data = sortAndUniqMirrors(status_data); + mir_data = sortAndUniqMirrors(mir_data).filter( + (d) => !(d.status == "disabled"), + ); + mirrorList.value = mir_data; + rawMirrorList.value = status_data; + }catch(e){ + throw e; + }finally{ + refreshTimer = setTimeout(refreshMirrorList, 10000); + } }; -nextTick(() => refreshMirrorList()); +nextTick().then(() => refreshMirrorList()); onMounted(() => { window.addEventListener("visibilitychange", () => { @@ -92,7 +93,7 @@ onMounted(() => { refreshTimer = null; } if (document.visibilityState === "visible") { - refreshMirrorList(); + refreshMirrorList().then(); } }); });