mirror of
https://gitee.com/spark-store-project/spark-store
synced 2026-09-20 13:40:11 +08:00
fix(robustness): 截图探测被 abort 取消时不污染负缓存(维度2)
- checkScreenshotExists 原 catch 不区分异常类型,用户快速切换/关闭详情触发 abort 时, 未完成的 HEAD 请求误写 false,导致同进程内再打开该应用少显示图片(重启才自愈) - 改为 signal.aborted 时上抛错误:由 loadScreenshots 的 Promise.all reject 被 openDetail 的 .catch 吞掉,既不写缓存也不覆盖 screenshots.value,后续新 controller 轮次正确填充 - 网络错误(非取消)仍正常写 false 过滤 404 脏数据;vue-tsc/lint/打包均通过
This commit is contained in:
Vendored
+1
-1
@@ -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) <nnnn is the bug number of your ITP>
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user