mirror of
https://gitlab.com/wgp/dougal/software.git
synced 2025-12-06 12:57:08 +00:00
Abort pending requests on successive map refreshes
This commit is contained in:
@@ -377,9 +377,20 @@ export default {
|
||||
|
||||
for (const l of this.layerRefreshConfig.filter(i => !layerset || layerset.includes(i.layer))) {
|
||||
if (map.hasLayer(l.layer)) {
|
||||
// Firing all refresh events asynchronously, which is OK provided
|
||||
// we don't have hundreds of layers to be refreshed.
|
||||
await this.api([l.url(query)]).then( (layer) => {
|
||||
|
||||
if (l.layer.abort && l.layer.abort instanceof AbortController) {
|
||||
l.layer.abort.abort();
|
||||
}
|
||||
|
||||
l.layer.abort = new AbortController();
|
||||
const signal = l.layer.abort.signal;
|
||||
|
||||
this.api([l.url(query), {signal}])
|
||||
.then( (layer) => {
|
||||
if (!layer) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (typeof l.transform == 'function') {
|
||||
layer = l.transform(layer);
|
||||
}
|
||||
@@ -395,6 +406,9 @@ export default {
|
||||
console.warn("Too much data from", l.url(query));
|
||||
}
|
||||
})
|
||||
.finally( () => {
|
||||
delete l.layer.abort;
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user