Skip to content

Commit 1b9834e

Browse files
committed
add parentEl.whenReady in mapFeature.whenReady as a pre-condition, avoid racing
1 parent 87f852c commit 1b9834e

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed

src/map-feature.js

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -658,27 +658,29 @@ export class MapFeature extends HTMLElement {
658658
map.setView(center, this.getMaxZoom(), { animate: false });
659659
}
660660
whenReady() {
661-
return new Promise((resolve, reject) => {
662-
let interval, failureTimer;
663-
if (this._featureGroup) {
664-
resolve();
665-
} else {
666-
let featureElement = this;
667-
interval = setInterval(testForFeature, 200, featureElement);
668-
failureTimer = setTimeout(featureNotDefined, 5000);
669-
}
670-
function testForFeature(featureElement) {
671-
if (featureElement._featureGroup) {
661+
return this._parentEl.whenReady().then(() => {
662+
return new Promise((resolve, reject) => {
663+
let interval, failureTimer;
664+
if (this._featureGroup) {
665+
resolve();
666+
} else {
667+
let featureElement = this;
668+
interval = setInterval(testForFeature, 200, featureElement);
669+
failureTimer = setTimeout(featureNotDefined, 5000);
670+
}
671+
function testForFeature(featureElement) {
672+
if (featureElement._featureGroup) {
673+
clearInterval(interval);
674+
clearTimeout(failureTimer);
675+
resolve();
676+
}
677+
}
678+
function featureNotDefined() {
672679
clearInterval(interval);
673680
clearTimeout(failureTimer);
674-
resolve();
681+
reject('Timeout reached waiting for feature to be ready');
675682
}
676-
}
677-
function featureNotDefined() {
678-
clearInterval(interval);
679-
clearTimeout(failureTimer);
680-
reject('Timeout reached waiting for feature to be ready');
681-
}
683+
});
682684
});
683685
}
684686
}

0 commit comments

Comments
 (0)