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