我有两个请求。请求A
获取初始数据,然后将ID传递给请求B
以获取与请求A
中的实体相关联的其余数据。然后我需要通过id
这是我到目前为止所取得的成就,但这是一个问题
let ids;
this.getAData(filters).pipe(
tap((aData) => (ids = aData.map(o => o.id))),
flatMap(() => this.getBData(ids))
)
.subscribe((data: any) => {
// was going to merge the two datasets by `ids` here
});
问题在于subscribe
我只获取第二个可观察this.getBData(ids)
的数据。
getAData()
和getBData(...)
都有相同的方法签名Observable<Thing[]>
如何解决这个问题?
我正在使用6.0.0-rc.7
和角度6.0.0-rc.5
答案 0 :(得分:1)
您可以这样写:
this.getAData(filters)
.pipe(
flatMap(aData => {
const ids = aData.map(({ id }) => id);
const bData$ = this.getBData(ids);
return Observable.zip(
Rx.Observable.of(aData),
bData$
);
})
)
.subscribe(([aData, bData]) => {
// Merge aData and bData
});
注意:
catchError
)