Wpis z mikrobloga

Mam fetcha, który pobiera mi json i na podstawie tych danych generuję obiekt mapy. Chciałbym potem korzystać z tego obiektu w wielu miejscach. Nie wiem jak to zrobić skoro fetch działa asynchronicznie i gdy chcę skorzystać z wygenerowanej mapy to jest ona pusta. Macie jakieś pomysły?

const mapa = {};
fetch(url)
.then((resp) => resp.json())
.then(function(response) {
_generateMap(response);
})

#javascript #programowanie
  • 7
@nowy000: jak w ramach modulu potrzebujesz to zrob sobie zamiast callback function arrow function - kontekts this zostanie ten sam i bedziesz mogl wygenerowana mape przypisac do zmiennej na poziomie modulu / komponentu.
jak potrzebujesz jej jeszcze "wyzej" - na poziomie aplikacji to uzyj jakiegos stora - cos jak vuex itp
@nowy000: ogólnie jest kilka opcji, możesz pobrać na początku - podczas inicjalizacji dane i zapisać w czymś wysoko w hierarchi - nie polecam, najlepszą opcją jest używanie do tego 'cache'u na poziomie serwisu, idealnie nadaje się singleton, który bierze odpowiedzialność za pobieranie/zwracanie wartości 'zapisanej' - przykład: http://www.paste.org/87095

Ewentualnie, jeśli Twoje zapytania są wykonywane równolegle i chcesz się ograniczyć tylko do 1 okresie czasu, możesz również zapisać referencję do promise, który będziesz