Sus*_*ant 7 javascript rx-java
假设我有一个observable
Observable<List<A>>,我想把它转换成一个Observable Observable<List<B>>.有没有最好的方式转换List<A>成List<B>.Javascript的map实现将是理想的情况.
你可以用Observable.from(Iterable<A>)得到Observable<A>,它映射(A => B),并转换为List<B>用Observable.toList()
Observable.from(Arrays.asList(1, 2, 3))
.map(val -> mapIntToString(val)).toList()
Run Code Online (Sandbox Code Playgroud)
例如
Observable.from(Arrays.asList(1, 2, 3))
.map(val -> val + "mapped").toList()
.toBlocking().subscribe(System.out::println);
Run Code Online (Sandbox Code Playgroud)
产量
[1映射,2映射,3映射]
我在这里回答了另一个类似的问题:https : //stackoverflow.com/a/42055221/454449
为方便起见,我在这里复制了答案(不确定这是否违反规则):
如果您想保持Lists源发出Observable的内容但将内容转换Observable<List<SourceObject>>为Observable<List<ResultsObject>>,您可以执行以下操作:
Observable<List<SourceObject>> source = ...
source.flatMap(list ->
Observable.fromIterable(list)
.map(item -> new ResultsObject(item))
.toList()
.toObservable() // Required for RxJava 2.x
)
.subscribe(resultsList -> ...);
Run Code Online (Sandbox Code Playgroud)
这确保了几件事:
Lists发射的数量Observable保持不变。即如果源发出 3 个列表,则另一端将有 3 个转换后的列表Observable.fromIterable()将确保内部Observable终止以便toList()可以使用| 归档时间: |
|
| 查看次数: |
4462 次 |
| 最近记录: |