Как получить результат после flatMap и сгенерировать новый Observer с результатом? - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть следующий метод Observer:

public __init__(httpResponse: HttpResponse<any>): Observable<any> {
    return this.initializeCredentials(httpResponse.headers, httpResponse.body['result']).flatMap((res) => {
      return this.initializePeriod(res);
    });

Где initializeCredentials() возвращает Наблюдателя:

private initializeCredentials(headers: HttpHeaders, body: any): Observable <any> {
   return Observable.of({'a' :1});
}

И initializePeriod() возвращает наблюдателя:

private initializePeriod(profile: any): Observable<Period> {
   return return Observable.of({'b' :2});
 }

Как получить результат после второго Наблюдателя: return this.initializePeriod(res); и выбросить результат дальше к методу __init__()?

Примечание: Важно передать результат от первого наблюдателя второму this.initializePeriod().

В результате мне нужно подсчитать на __init__() и получить оба результата от Observerbes:

this.__init__().subscribe((result) => {
      console.log(result);
});

1 Ответ

0 голосов
/ 02 ноября 2018

Если вы используете rxjs5, есть функция выбора результата для flatMap

public __init__(httpResponse: HttpResponse<any>): Observable<any> {
    return this.initializeCredentials(httpResponse.headers, httpResponse.body['result']).flatMap((res) => {
      return this.initializePeriod(res);
    },
(firstRes,secondRes)=>{
return {firstRes,secondRes}
}
);
...