fix loading error
This commit is contained in:
parent
c6a59c48a5
commit
687749f431
@ -86,6 +86,7 @@ export function useRadarTile({
|
||||
const cachedBitmap = getFrame(frameIndex)
|
||||
if (cachedBitmap) {
|
||||
setCurrentBitmap(cachedBitmap)
|
||||
preCacheAroundTime(timestamp)
|
||||
setIsLoading(false)
|
||||
return cachedBitmap
|
||||
}
|
||||
@ -108,8 +109,7 @@ export function useRadarTile({
|
||||
// 使用高优先级加载当前帧
|
||||
loadFrame(url, frameIndex, 'high')
|
||||
|
||||
// 触发预缓存
|
||||
await preCacheAroundTime(timestamp)
|
||||
preCacheAroundTime(timestamp)
|
||||
|
||||
return null // 实际的bitmap会通过订阅通知获取
|
||||
} catch (err) {
|
||||
@ -125,7 +125,7 @@ export function useRadarTile({
|
||||
}, [generateUrl, getFrameIndex, getFrame, loadFrame, subscribeToFrame])
|
||||
|
||||
// 在指定时间前后预缓存N个帧
|
||||
const preCacheAroundTime = useCallback(async (centerTimestamp: number, timeInterval: number = 360000) => { // 默认5分钟间隔
|
||||
const preCacheAroundTime = useCallback((centerTimestamp: number, timeInterval: number = 360000) => { // 默认5分钟间隔
|
||||
if (!generateUrl) return
|
||||
|
||||
const urlsWithFrameIndices: Array<{ url: string, frameIndex: number }> = []
|
||||
@ -137,6 +137,11 @@ export function useRadarTile({
|
||||
const timestamp = centerTimestamp + (i * timeInterval)
|
||||
const url = generateUrl(timestamp)
|
||||
const frameIndex = getFrameIndex(timestamp)
|
||||
|
||||
if (isFrameCached(frameIndex)) {
|
||||
continue
|
||||
}
|
||||
|
||||
urlsWithFrameIndices.push({ url, frameIndex })
|
||||
}
|
||||
|
||||
@ -165,10 +170,6 @@ export function useRadarTile({
|
||||
}
|
||||
}, [frameLoaderError, error])
|
||||
|
||||
useEffect(() => {
|
||||
setIsLoading(frameLoaderIsLoading)
|
||||
}, [frameLoaderIsLoading])
|
||||
|
||||
// 高级功能:清空缓存
|
||||
const clearAllCache = useCallback(() => {
|
||||
if (unsubscribeRef.current) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user