Iが観察myObservable
有する:concatMap()等価が、非同期()
let myObservable = Observable.of(2000, 1000)
concatMap()
で:合計時間= 3000ミリ秒、元の順序で結果。 mergeMap()
で
myObservable.concatMap(v => Rx.Observable.of(v).delay(v))
// concatMap: 2000, concatMap: 1000
:TOTAL TIME = 2000ミリ秒は、元の順序ではない結果。
myObservable.mergeMap(v => Rx.Observable.of(v).delay(v))
// mergeMap: 1000, mergeMap: 2000
私はconcatMap
のように元の順序で結果を取得する方法をしたいが、それぞれが代わりに完了するために、次のネストされた、観察を待つので非同期に観測可能なネストされた呼び出し:
// --- The behavior that I want ---
myObservable.myCustomMap(v => Rx.Observable.of(v).delay(v))
// myCustomMap: 2000, myCustomMap: 1000
// TOTAL TIME = 2000 millis
がありますエレガントなソリューション?
編集:私はソース(myObservable
)がこの特定の同期ケースだけでなく、非同期でも動作するソリューションを探しています。
これには 'forkJoin'を使うべきです。適切な答えを書いてください。 – Maxime
ソース 'myObservable'が非同期に放出されると思いますか?私は、ユースケースがObservable.of(2000、1000) 'よりも複雑であることを意味していますか? – martin
@martinはい、ユースケースはより複雑で潜在的に非同期です – PerrierCitror