File tree Expand file tree Collapse file tree 2 files changed +26
-0
lines changed
language-adaptors/rxjava-scala/src
examples/scala/rx/lang/scala/examples Expand file tree Collapse file tree 2 files changed +26
-0
lines changed Original file line number Diff line number Diff line change @@ -1169,4 +1169,11 @@ class RxScalaDemo extends JUnitSuite {
1169
1169
(n : Int , m : Int ) => n * m
1170
1170
).toBlocking.foreach(println)
1171
1171
}
1172
+
1173
+ @ Test def concatMapExample () {
1174
+ val o = Observable .items(10 , 100 )
1175
+ o.concatMap(n => Observable .interval(200 millis).map(_ * n).take(10 ))
1176
+ .take(20 )
1177
+ .toBlocking.foreach(println)
1178
+ }
1172
1179
}
Original file line number Diff line number Diff line change @@ -298,6 +298,25 @@ trait Observable[+T]
298
298
toScalaObservable[U ](o5)
299
299
}
300
300
301
+ /**
302
+ * Returns a new Observable that emits items resulting from applying a function that you supply to each item
303
+ * emitted by the source Observable, where that function returns an Observable, and then emitting the items
304
+ * that result from concatinating those resulting Observables.
305
+ *
306
+ * <img width="640" height="305" src="https://raw.github.com/wiki/Netflix/RxJava/images/rx-operators/concatMap.png">
307
+ *
308
+ * @param f a function that, when applied to an item emitted by the source Observable, returns an Observable
309
+ * @return an Observable that emits the result of applying the transformation function to each item emitted
310
+ * by the source Observable and concatinating the Observables obtained from this transformation
311
+ */
312
+ def concatMap [R ](f : T => Observable [R ]): Observable [R ] = {
313
+ toScalaObservable[R ](asJavaObservable.concatMap[R ](new Func1 [T , rx.Observable [_ <: R ]] {
314
+ def call (t1 : T ): rx.Observable [_ <: R ] = {
315
+ f(t1).asJavaObservable
316
+ }
317
+ }))
318
+ }
319
+
301
320
/**
302
321
* Wraps this Observable in another Observable that ensures that the resulting
303
322
* Observable is chronologically well-behaved.
You can’t perform that action at this time.
0 commit comments