From c55f128c22f2106ea8377c48c47a9a112ff388ab Mon Sep 17 00:00:00 2001 From: root <13910913995@163.com> Date: Wed, 15 Apr 2026 08:48:26 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/renderer/src/views/Login.vue | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/frontend/src/renderer/src/views/Login.vue b/frontend/src/renderer/src/views/Login.vue index ab290c05..e8f51666 100644 --- a/frontend/src/renderer/src/views/Login.vue +++ b/frontend/src/renderer/src/views/Login.vue @@ -440,9 +440,12 @@ const handleLogin = async () => { isLoading.value = true - // 网络访问测试(最多重试3次,短退避:200/400/800ms,总上限约 1.4s) + // 网络访问测试(打包后端启动较慢时,做短暂重试等待) + const MAX_HEALTH_ATTEMPTS = 6 + const HEALTH_BASE_DELAY_MS = 200 + const HEALTH_MAX_DELAY_MS = 1500 let healthOk = false - for (let attempt = 1; attempt <= 3; attempt++) { + for (let attempt = 1; attempt <= MAX_HEALTH_ATTEMPTS; attempt++) { try { const result = await systemAPI.health() if (result && result.status === 'healthy') { @@ -450,22 +453,22 @@ const handleLogin = async () => { break } else { // 后台返回非 healthy 状态 - if (attempt === 3) { + if (attempt === MAX_HEALTH_ATTEMPTS) { showError('后台服务异常,请稍后重试!') isLoading.value = false return } - const delay = 200 * Math.pow(2, attempt - 1) + const delay = Math.min(HEALTH_MAX_DELAY_MS, HEALTH_BASE_DELAY_MS * Math.pow(2, attempt - 1)) await new Promise(resolve => setTimeout(resolve, delay)) } } catch (error) { // 捕获异常,等待后重试 - if (attempt === 3) { + if (attempt === MAX_HEALTH_ATTEMPTS) { showError('网络访问失败,请检查连接后重试!') isLoading.value = false return } - const delay = 200 * Math.pow(2, attempt - 1) + const delay = Math.min(HEALTH_MAX_DELAY_MS, HEALTH_BASE_DELAY_MS * Math.pow(2, attempt - 1)) await new Promise(resolve => setTimeout(resolve, delay)) } }