【发布时间】:2021-10-31 01:21:45
【问题描述】:
我有一个Flowable<List<Item>> 我想要:
- 对每个项目进行操作
- 之后,我想对整个结果列表进行操作。
这现在不起作用,因为它看起来像是进入了一个无限循环::
return list.concatMap(list ->
Observable.fromIterable(list)
.map(item -> {
item.setValue(value);
return item;
}).toList().toFlowable()
.flatMap(updatedList -> mLocalDataSource.update(updatedList)))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
【问题讨论】:
-
嗯,您这里的代码看起来不会进入无限循环。您可以更改一些运算符(
flatMapIterable(l -> l)代替concatMap(l -> Observable.fromIterable(...)、doOnNext代替map、flatMapPublisher代替toFlowable().flatMap(...)),但是您所拥有的应该可以工作。不过,我确实同意@PPartisan - 只是迭代列表,而不是通过 RxJava 运算符将其展平/重建,是一个更好的选择。
标签: android rx-java iterable flatmap concatmap