From 6934f3e4fe822b7eef70bb83fc47c833d9dc3b69 Mon Sep 17 00:00:00 2001 From: zhangyahui Date: Thu, 4 Jun 2026 16:12:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20web=20resource=E5=88=86=E6=89=B9?= =?UTF-8?q?=E8=AF=B7=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/home/agent/components/Preview.vue | 38 ++++++++++++++++++--- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/src/views/home/agent/components/Preview.vue b/src/views/home/agent/components/Preview.vue index 88a413e..b660970 100644 --- a/src/views/home/agent/components/Preview.vue +++ b/src/views/home/agent/components/Preview.vue @@ -210,15 +210,43 @@ const urlLoading = ref(false) const fetchedUrlSet = ref>(new Set()) + + const BATCH_SIZE = 4 + let isFetchingUrls = false + let pendingUrlList: string[] | null = null + + const fetchBatch = async (batch: string[]) => { + const res = await fetchUrlTitle(batch) + batch.forEach((url) => fetchedUrlSet.value.add(url)) + urlList.value = [...urlList.value, ...res] + } + const setUrls = async (list: string[]) => { reportType.value = 'urls' const newUrls = [...new Set(list.filter((url) => !fetchedUrlSet.value.has(url)))] if (newUrls.length === 0) return - urlLoading.value = true - const res = await fetchUrlTitle(newUrls) - urlLoading.value = false - newUrls.forEach((url) => fetchedUrlSet.value.add(url)) - urlList.value = [...urlList.value, ...res] + + if (isFetchingUrls) { + pendingUrlList = list + return + } + + isFetchingUrls = true + if (urlList.value.length < 1) { + urlLoading.value = true + } + for (let i = 0; i < newUrls.length; i += BATCH_SIZE) { + const batch = newUrls.slice(i, i + BATCH_SIZE) + await fetchBatch(batch) + urlLoading.value = false + } + isFetchingUrls = false + + if (pendingUrlList) { + const next = pendingUrlList + pendingUrlList = null + setUrls(next) + } } // watch( // () => sessionId.value,