對於在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方法對應什麼?它是否加載特定用戶的帖子? –