| | |
| | | |
| | | type RouteDistance = { value: number; unit: 'km' | 'm' } | null; |
| | | |
| | | const SHARE_TRIP_POLL_INTERVAL_MS = 10000; // 分享页轮询间隔 |
| | | const MAX_SHARE_TRIP_POLL_COUNT = 60; // 分享页最多轮询 10 分钟 |
| | | |
| | | type Deps = { |
| | | authReady: boolean; |
| | | orderId: string; |
| | |
| | | |
| | | let cancelled = false; |
| | | let timer: ReturnType<typeof setInterval> | null = null; |
| | | let pollCount = 0; |
| | | |
| | | const stopPolling = () => { |
| | | if (timer) { |
| | |
| | | if (!infoState || cancelled) return; |
| | | fetchShareTripData(); |
| | | if (infoState.mappedStatus < TripStatus.ArrivedDestination) { |
| | | timer = setInterval(fetchShareTripData, 10000); |
| | | timer = setInterval(() => { |
| | | pollCount += 1; |
| | | if (pollCount >= MAX_SHARE_TRIP_POLL_COUNT) { |
| | | stopPolling(); |
| | | Taro.showToast({ title: '分享行程数据可能不是最新,请手动刷新', icon: 'none' }); |
| | | return; |
| | | } |
| | | fetchShareTripData(); |
| | | }, SHARE_TRIP_POLL_INTERVAL_MS); |
| | | } |
| | | }) |
| | | .catch((error) => { |