docs: address maintainer review for PR #1047

This commit is contained in:
Rudy Celekli committed 2026-10-14 20:12:42 -04:00
1 parent 5889d35327
commit bbbdd0aeba
2 files changed
+3 -6

No files matched your search

+2 -5
View File
@@ -5200,6 +5200,8 @@ the project's MIT license; see `DATA_SOURCES.md`.
## Map source factories and coordination ## Map source factories and coordination
A subscriber removed, or a controller destroyed, during a settled-state delivery receives no further callbacks from that delivery.
Map selection is composed from separate imagery, terrain and 3D factories. Map selection is composed from separate imagery, terrain and 3D factories.
The default registry retains Google 3D, Bing Aerial/Labels, Esri Satellite and The default registry retains Google 3D, Bing Aerial/Labels, Esri Satellite and
OSM, including their setup guidance and existing preset/share IDs. Esri still OSM, including their setup guidance and existing preset/share IDs. Esri still
@@ -5326,8 +5328,3 @@ datacenters, dams and the Nepal locator retain that shared credit while displaye
Military fragments stitch by source identity. Different mapped parcels merge only Military fragments stitch by source identity. Different mapped parcels merge only
when their footprints touch or contain one another, never across a seam tolerance gap. when their footprints touch or contain one another, never across a seam tolerance gap.
### fix(maps): stop delivering settled state to detached subscribers
Recheck listener ownership and controller lifetime before each settled-state callback. Still-active subscribers keep their ordering and exception isolation.
+1 -1
View File
@@ -142,7 +142,7 @@ export class MapSourceController {
if (this._destroyed || !this._subscribers.size) return; if (this._destroyed || !this._subscribers.size) return;
const state = this.getState(); const state = this.getState();
for (const listener of [...this._subscribers]) { for (const listener of [...this._subscribers]) {
if (this._destroyed || !this._subscribers.has(listener)) continue; if (!this._subscribers.has(listener)) continue;
try { try {
listener(state); listener(state);
} catch (error) { } catch (error) {