Browse Source

Fix error handling when refreshing

master
Kenneth Bruen 2 years ago
parent
commit
7e3e928682
Signed by: kbruen
GPG Key ID: C1980A470C3EE5B1
  1. 46
      view-train.js

46
view-train.js

@ -193,22 +193,36 @@ function onTrainData(data) {
var refreshStopToken = null
function refresh() {
return fetch(`https://scraper.infotren.dcdev.ro/v2/train/${trainNumber}?date=${date.getFullYear().toString()}-${(date.getMonth() + 1).toString().padStart(2, "0")}-${date.getDate().toString().padStart(2, "0")}`)
.then(function (response) {
return response.json()
})
.then(function (response) {
trainData = response
onTrainData(response)
})
.then(function () {
if (refreshStopToken != null) {
clearTimeout(refreshStopToken)
}
refreshStopToken = setTimeout(function () {
refresh()
}, 60000)
})
function reschedule(timeout) {
if (refreshStopToken != null) {
clearTimeout(refreshStopToken)
}
refreshStopToken = setTimeout(function () {
refresh()
}, timeout || 60000)
}
return fetch(
`https://scraper.infotren.dcdev.ro/v2/train/${trainNumber}?date=${date.getFullYear().toString()}-${(date.getMonth() + 1).toString().padStart(2, "0")}-${date.getDate().toString().padStart(2, "0")}`,
{
cache: 'no-store',
},
).then(function (response) {
if (!response.ok) {
// Check in 10 seconds if server returned error
reschedule(10000)
return
}
return response.json()
}).then(function (response) {
trainData = response
onTrainData(response)
}).then(function () {
reschedule()
}).catch(function (e) {
// Check in 1 second if network error
reschedule(1000)
throw e
})
}
window.addEventListener('unload', function (e) {

Loading…
Cancel
Save