Abort pending requests on successive map refreshes

This commit is contained in:
D. Berge
2020-09-26 01:18:12 +02:00
parent b383f4e4c0
commit f2024a7b99

View File

@@ -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;
});
}
}
},