Skip to content

Commit e66f96f

Browse files
Avoid multiple api loads (google-map-react#955)
1 parent d19ac1d commit e66f96f

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

src/loaders/google_map_loader.js

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { Loader } from '@googlemaps/js-api-loader';
22

3-
let loader_ = null;
4-
3+
let loadPromise_;
54
let resolveCustomPromise_;
65

76
const _customPromise = new Promise((resolve) => {
@@ -16,6 +15,11 @@ export default (bootstrapURLKeys, heatmapLibrary) => {
1615
return _customPromise;
1716
}
1817

18+
// avoid api to be loaded multiple times
19+
if (loadPromise_) {
20+
return loadPromise_;
21+
}
22+
1923
if (!bootstrapURLKeys.libraries) {
2024
bootstrapURLKeys.libraries = [];
2125
}
@@ -50,23 +54,21 @@ export default (bootstrapURLKeys, heatmapLibrary) => {
5054
throw new Error('google map cannot be loaded outside browser env');
5155
}
5256

53-
if (!loader_) {
54-
const { key, ...restKeys } = bootstrapURLKeys;
57+
const { key, ...restKeys } = bootstrapURLKeys;
5558

56-
loader_ = new Loader({
57-
// need to keep key for backwards compatibility
58-
apiKey: key || '',
59-
...restKeys,
60-
libraries,
61-
});
62-
}
59+
const loader_ = new Loader({
60+
// need to keep key for backwards compatibility
61+
apiKey: key || '',
62+
...restKeys,
63+
libraries,
64+
});
6365

64-
const loadPromise = loader_.load().then(() => {
66+
loadPromise_ = loader_.load().then(() => {
6567
resolveCustomPromise_(window.google.maps);
6668
return window.google.maps;
6769
});
6870

69-
resolveCustomPromise_(loadPromise);
71+
resolveCustomPromise_(loadPromise_);
7072

71-
return loadPromise;
73+
return loadPromise_;
7274
};

0 commit comments

Comments
 (0)