fix: browse序号保护防止token刷新重试导致的双刷新

This commit is contained in:
Your Name
2026-06-02 03:48:01 +08:00
parent 1d6d26d612
commit 3bc2843642
+11 -2
View File
@@ -851,8 +851,12 @@ function openInTerminal() {
}) })
} }
// 序号保护:防止并发/重试请求导致旧结果覆盖新结果
let _browseSeq = 0
async function browse() { async function browse() {
if (!selectedServer.value) return if (!selectedServer.value) return
const seq = ++_browseSeq
loading.value = true loading.value = true
const path = normalizeRemotePath(currentPath.value) const path = normalizeRemotePath(currentPath.value)
currentPath.value = path currentPath.value = path
@@ -861,6 +865,8 @@ async function browse() {
server_id: selectedServer.value, server_id: selectedServer.value,
path, path,
}) })
// 如果期间启动了更新的 browse(token刷新重试/快速导航),丢弃本次结果
if (seq !== _browseSeq) return
const { items, error } = parseBrowseResponse(res) const { items, error } = parseBrowseResponse(res)
// Auto-fallback: if path doesn't exist, try parent directories automatically // Auto-fallback: if path doesn't exist, try parent directories automatically
@@ -886,11 +892,14 @@ async function browse() {
preloadDirectoryFiles(selectedServer.value, path, items) preloadDirectoryFiles(selectedServer.value, path, items)
} }
} catch { } catch {
if (seq !== _browseSeq) return
files.value = [] files.value = []
snackbar('浏览目录失败', 'error') snackbar('浏览目录失败', 'error')
} finally { } finally {
loading.value = false if (seq === _browseSeq) {
syncRouteQuery() loading.value = false
syncRouteQuery()
}
} }
} }