2017-07-26 4 views
0

私はこの問題をしばらく解決しようとしていましたが、これはかなり一般的な問題ですが、私がやりたいことは、観察可能な、そして増強はだから私は、次のような何かしたい、観察やpromiselike で発生:配列の観測で別々の値を増やす - RxJS

function augment(person: Person): Observable<PersonWithAddress> { 
    // does ajax call or something 
} 

const items$: Observable<Person[]>; 

items$ 
    .do(x => {}) // x would be of type Person[] 
    .flatFlatMap(person => { // person would be of type Person 
     return augment(person); // this would return an Observable<PersonWithAddress> 
    }) 
    .subscribe(peopleWithAddresses => { // peopleWithAddresses would be of type PersonWithAddress[] 
    }) 

このため、オペレータのいくつかの種類がありますが、私は私が観察から放出された単一の項目を増補またはマッピングすることができます取得flatMapで観測可能なものから来ている何かに、flatFlatMap程度のものがあります。

答えて

1

forkJoinを使用して任意の操作を行うことができます。

それは観測(または約束)の配列を受け取り、すべてが完了した(または解決)しているとき、それが放出される最後の(または解決)の値を含む配列を発する:

import { Observable } from "rxjs/Observable"; 
import "rxjs/add/observable/forkJoin"; 


items$ 
    .flatMap((people: Person[]) => Observable.forkJoin(
    people.map(person => augment(person)) 
)) 
    .subscribe((peopleWithAddresses: PersonWithAddress[]) => { 
    // ... 
    }); 
+0

おかげで非常に多くすっごいです、 、私はしばらくの間これに苦労してきました。非常に多くの演算子があります – YentheO

+1

ええ、覚えておくべきことがいくつかあります。あなたはそれを見たことがないかもしれませんが、RxJSのWebページの一番下には便利なツールがあります:http://reactivex.io/rxjs/ – cartant

関連する問題