From 3cedd0c517c2dceac18a56fb6b90eec29df7ec90 Mon Sep 17 00:00:00 2001 From: xiyidaiwa Date: Thu, 13 Aug 2026 23:09:10 +0800 Subject: [PATCH] =?UTF-8?q?fix(robustness):=20=E6=88=AA=E5=9B=BE=E6=8E=A2?= =?UTF-8?q?=E6=B5=8B=E8=A2=AB=20abort=20=E5=8F=96=E6=B6=88=E6=97=B6?= =?UTF-8?q?=E4=B8=8D=E6=B1=A1=E6=9F=93=E8=B4=9F=E7=BC=93=E5=AD=98=EF=BC=88?= =?UTF-8?q?=E7=BB=B4=E5=BA=A62=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - checkScreenshotExists 原 catch 不区分异常类型,用户快速切换/关闭详情触发 abort 时, 未完成的 HEAD 请求误写 false,导致同进程内再打开该应用少显示图片(重启才自愈) - 改为 signal.aborted 时上抛错误:由 loadScreenshots 的 Promise.all reject 被 openDetail 的 .catch 吞掉,既不写缓存也不覆盖 screenshots.value,后续新 controller 轮次正确填充 - 网络错误(非取消)仍正常写 false 过滤 404 脏数据;vue-tsc/lint/打包均通过 --- debian/changelog | 2 +- src/composables/useAppDetail.ts | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 4b3e1c4a..f5d7ad6b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -spark-store (5.2.1.7-test) UNRELEASED; urgency=medium +spark-store (5.2.1.8-test) UNRELEASED; urgency=medium * Initial release. (Closes: #nnnn) diff --git a/src/composables/useAppDetail.ts b/src/composables/useAppDetail.ts index 2e38b232..3378e0dc 100644 --- a/src/composables/useAppDetail.ts +++ b/src/composables/useAppDetail.ts @@ -417,7 +417,12 @@ const checkScreenshotExists = async ( await axiosInstance.head(url, { timeout: 3000, signal }); screenshotExistenceCache.set(url, true); return true; - } catch { + } catch (err) { + // 请求被主动取消(用户快速切换/关闭详情触发 abort)时,不应把该 URL 误记为 + // "不存在"污染缓存——否则同进程内再打开该应用会少显示图片,直到重启才恢复。 + // 取消错误直接上抛,由 loadScreenshots 的 Promise.all reject 被 openDetail 吞掉, + // 既不写缓存也不覆盖 screenshots,后续成功的轮次(新 controller)会正确填充。 + if (signal?.aborted) throw err; screenshotExistenceCache.set(url, false); return false; }