aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZog2018-03-29 11:03:40 +0200
committerJohan Van Ryseghem2018-03-29 11:04:40 +0200
commit205380dc853ea8e0dc9643f159354c8e15c44fe0 (patch)
treea9eaa5442f36176d33628fd7c7ea8d2531341993
parent53d9adfd561e291ec9830e45d2cbae8f3ae0aac8 (diff)
downloadchouette-core-205380dc853ea8e0dc9643f159354c8e15c44fe0.tar.bz2
Prevent multiple concurent queries for routes costs
-rw-r--r--app/javascript/journey_patterns/actions/index.js18
1 files changed, 17 insertions, 1 deletions
diff --git a/app/javascript/journey_patterns/actions/index.js b/app/javascript/journey_patterns/actions/index.js
index b90908264..666157ea4 100644
--- a/app/javascript/journey_patterns/actions/index.js
+++ b/app/javascript/journey_patterns/actions/index.js
@@ -220,7 +220,16 @@ const actions = {
})
},
fetchRouteCosts: (dispatch, key, index) => {
- if (actions.routeCostsCache) {
+ if(actions.fetchingRouteCosts){
+ // A request is already sent, wait for it
+ if(!actions.waitingForRouteCosts){
+ actions.waitingForRouteCosts = []
+ }
+ actions.waitingForRouteCosts.push([key, index])
+ return
+ }
+
+ if(actions.routeCostsCache) {
// Dispatch asynchronously to prevent warning when
// this executes during `render()`
requestAnimationFrame(() => {
@@ -231,6 +240,7 @@ const actions = {
))
})
} else {
+ actions.fetchingRouteCosts = true
fetch(window.routeCostsUrl, {
credentials: 'same-origin',
}).then(response => {
@@ -240,6 +250,12 @@ const actions = {
actions.routeCostsCache = costs
dispatch(actions.receiveRouteCosts(costs, key, index))
+ if(actions.waitingForRouteCosts){
+ actions.waitingForRouteCosts.map(function(item, i) {
+ dispatch(actions.receiveRouteCosts(costs, item[0], item[1]))
+ })
+ }
+ actions.fetchingRouteCosts = false
})
}
},