对于在TypeScript中使用Angular2编写的Web应用程序,我需要使用RxJs Observable
s。
因为我从来没有使用过rxjs,而且我也是一般的新手,所以我有时会遇到一些困难,找到正确的方法去做一些特定的事情。
我现在面临一个问题。我必须将Array<Observable<T>>
转换为Observable<Array<T>>
。
我会尝试用一个例子来解释一下:
- 我有一个Observable
,这给了我的Users
(Observable<Array<User>>
)
名单 - 该User
-class具有功能getPosts
返回一个Observable<Array<Post>>
。
- 我需要将Observable<Array<User>>
映射到Observable<Array<Post>>
以评估onNext
函数中的所有Post
。RxJs阵列可观察阵列
我可以从Observable<Array<User>>
使用
map((result : Array<User>) => result.map((user : User) => user.getPosts()))
ANS容易映射到Observable<Array<Observable<Array<Post>>>>
我可以变平的Array<Array<Post>>
成Array<Post>
。
但是我只是找不到正确的方法将Observable<Array<Observable<Array<Post>>>>
映射到Observable<Array<Array<Post>>>
到目前为止,我使用combineLatest
功能与flatMap
一起。
对我来说,它似乎工作,我使用的编辑器(Atom编辑器)没有显示任何错误。但是现在我使用Netbeans,它显示我在这段代码中有错误。还使用“tsc”编译代码会导致错误。
的是这样的:
Argument of type '(result: Post[]) => void' is not assignable to parameter of type 'NextObserver<[Observable<Post>]> | ErrorObserver<[Observable<Post>]> | CompletionObserver<[...'.
Type '(result: Post[]) => void' is not assignable to type '(value: [Observable<Post>]) => void'.
所以我的问题是:
我如何 “扁平化” 的Observables
的Array
到Array
?
getPosts方法对应什么?它是否加载特定用户的帖子? –