Angular 2 - asynchronicznośc wywołania GET, a przypisanie danych do zmiennej

0

Witam.

Wybaczcie nie wiedziałem jak precyzyjnie nazwać temat. Pracuje od niedawna z Angularem i mam taki problem, że strzelam GET do WebApi controllera, a strzał jest asynchroniczny przez co nie mogę wykorzystać danych, które zwraca controller, od razu poza funkcją. Poniżej wklejam kod, aby dokładnie zobrazować problem:

Component, z którego wywołuje funkcję mojego serwisu angularowego:

slowniki: any;
constructor(private _mojService: MojService) { }

ngOnInit(): void {
        this._mojService.pobierzSlowniki()
            .subscribe(slowniki=> {
                this.slowniki= slowniki;
                console.log("Tu widac response:" + slowniki);
            });
        console.log("Tu nie widac response:" + this.slowniki);
    }

operacjaNaSlownikach() {
        // zrób coś na this.slowniki, slowniki są undefined
    }

MojService wyglada tak:

constructor(private _http: Http) { }

pobierzSlownikii(): Observable<any> {
        return this._http.get(this._serviceUrl + "PobierzSlowniki")
            .map((response: Response) => response.json());
    }

Potrzebuję operować na tych danych poza funkcją, więc nie mogę czekać na odpowiedź żądania. Z tego co się zorientowałem nie można wywoływać GET synchronicznie w Angularze. Ustawianie TimeOut na odpalenie pozostałych funkcji też nie jest dobrym pomysłem. Nie wiem jak to poprawnie rozwiązać. To jest prosty przykład, jednak podobne funkcję występują w wielu miejscach w kodzie.

Pozdrawiam serdecznie ;)

1

Jedyną opcją jest wykorzystanie subscribe lub innej formy Promise / callbacków - tak że rozwiązaniem jest w tym przypadku przeniesienie dalszej zawartości funkcji do funkcji anonimowej przekazywanej do subscribe.

Rzuć jeszcze okiem na async / await, lecz to już są bardziej skomplikowane sprawy i wymagają w pierwszym miejscu zrozumienia jak działa programowanie asynchroniczne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1