如何在 flatMap 之后获得结果并抛出一个带有结果的新观察者?
How to get result after flatMap and throw a new Observer with result?
我有以下观察者方法:
public __init__(httpResponse: HttpResponse<any>): Observable<any> {
return this.initializeCredentials(httpResponse.headers, httpResponse.body['result']).flatMap((res) => {
return this.initializePeriod(res);
});
其中 initializeCredentials()
returns 观察者:
private initializeCredentials(headers: HttpHeaders, body: any): Observable <any> {
return Observable.of({'a' :1});
}
和initializePeriod()
returns观察者:
private initializePeriod(profile: any): Observable<Period> {
return return Observable.of({'b' :2});
}
如何在第二个 Observer 之后获得结果:return this.initializePeriod(res);
并将结果抛出到方法 __init__()
之后?
注意: 将结果从第一个 Observer 传递给第二个 this.initializePeriod()
.
很重要
结果我需要在 __init__()
上进行 subrube 并从 Observerbes 获得两个结果:
this.__init__().subscribe((result) => {
console.log(result);
});
如果您使用的是 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}
}
);
我有以下观察者方法:
public __init__(httpResponse: HttpResponse<any>): Observable<any> {
return this.initializeCredentials(httpResponse.headers, httpResponse.body['result']).flatMap((res) => {
return this.initializePeriod(res);
});
其中 initializeCredentials()
returns 观察者:
private initializeCredentials(headers: HttpHeaders, body: any): Observable <any> {
return Observable.of({'a' :1});
}
和initializePeriod()
returns观察者:
private initializePeriod(profile: any): Observable<Period> {
return return Observable.of({'b' :2});
}
如何在第二个 Observer 之后获得结果:return this.initializePeriod(res);
并将结果抛出到方法 __init__()
之后?
注意: 将结果从第一个 Observer 传递给第二个 this.initializePeriod()
.
结果我需要在 __init__()
上进行 subrube 并从 Observerbes 获得两个结果:
this.__init__().subscribe((result) => {
console.log(result);
});
如果您使用的是 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}
}
);