timmy 0ad7f0fba5 前端空資料自動重試,改善 Redis 冷啟動 UX
後端 Redis key 過期時會先回空陣列、背景 fetcher 約 30-60 秒
填回資料。過去前端只要拿到空 items 就直接顯示紅色錯誤框,
使用者第一次開頁面撞上這個暫態會誤以為服務壞了。

這次把「空資料」視為暫態而非錯誤:顯示中性的 loading banner
並每 8 秒自動重試,最多 10 次(總 80 秒)。拿到資料立即停止
polling 並渲染;超過上限仍空則改顯示中性的稍後重試提示,
不再使用紅色錯誤框。真正的 network / HTTP / JSON 錯誤維持
原本的紅框行為。

新增:showStatus / clearStatus / scheduleRetry / clearRetry、
retryCount / retryTimer 狀態變數、renderItems 抽出 marker 渲染、
loadScan 包裝整個 fetch 流程,beforeunload 清 timer 防 leak。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 11:13:27 +08:00
Description
Leaflet map showing Pokémon GO spots in Taiwan
4.2 MiB
Languages
HTML 97%
Shell 3%