【发布时间】:2018-02-09 15:53:46
【问题描述】:
在我的角度服务中,我有两种工作方法:
getAObjects(): Observable<A[]>
convert(object: A): Observable<B>
它们执行一些异步请求,并获取一组 A 类型对象或 B 类型对象(如果给定 A 类型对象)。
现在我要实现第三种方法:
getBObjects(): Observable<B[]>
这应该异步获取所有 A 类对象,然后将它们转换为 B 类对象。如果我按下获取按钮,这应该会发生,所以我想订阅这个新方法,所有请求都应该从那里开始。
到目前为止,我已经尝试了以下方法:
getBObjects(): Observable<B[]> {
const a: Observable<A[]> = getAObjects();
const b: Observable<Observable<B>[]> = a.map(aList => aList.map(aItem => convert(aItem)));
const c: Observable<Observable<B>> = b.flatMap(bItem => bItem);
const d: Observable<B> = c.flatMap(cItem => cItem);
}
我想使用 flatMap 之类的东西来摆脱 Observable 的 Observable 但保留数组而不是摆脱数组。这是可能的还是有更好的方法来实现这种转换?
【问题讨论】:
标签: angular rxjs observable