0
我想使用RxJava 2从数据库执行一组项目的后台任务。项目列表可能为空,这意味着我无法使用flatMapIterable,因为它会在空的时候抛出异常清单:FlatMapIterable和空列表
Observable
.fromCallable(() -> SQLite
.select()
.from(VideoUpload.class)
.where(VideoUpload_Table.status.eq(VIDEO_UPLOAD_IN_PROGRESS))
.queryList())
.flatMapIterable(videoUploads -> videoUploads)
.map(videoUpload -> {
videoUpload.setStatus(VIDEO_UPLOAD_NOT_STARTED);
return videoUpload;
})
.firstElement()
.subscribeOn(Schedulers.io())
.subscribe(/* TODO */);
我可以移动到一切可调用,执行滤波那里等,但我想有可能是基于上面的代码更优雅的解决方案。
如果我正确理解你的问题,你唯一的担心是,源observable可能是空的,你不想在流上执行'filter'。在这种情况下,不会['flatMapMaybe()'](http://reactivex.io/RxJava/javadoc/io/reactivex/Observable.html#flatMapMaybe(io.reactivex.functions.Function))方便吗? – azizbekian
是的,我正在考虑使用一个也许,但我不知道如何,你有什么建议吗?关注点不仅是过滤器,而且也是flatMapIterable,因为如果传入迭代器为空,它将引发异常。 – Francesc