RxJava 2 +房间交易:在两个rxjava操作的交易中返回单个Disposable

时间:2018-06-03 01:57:44

标签: database transactions kotlin rx-java2 android-room

我正在使用Room数据库和RxJava。 我需要从表中删除所有记录,然后插入新的条目集。

这样做的方法是:

@Transaction
fun clearAndInsert(records: List<Whatever>): Disposable {
    deleteRecords()
    insertRecords(records)
}

deleteRecords()返回一次性用品  并且insertRecords()返回一次性用品。 但是,我想从这个方法返回一个Disposable。虽然我可以返回一个CompositeDisposable。 所以我的意思是:

@Transaction
override fun clearAndInsertTags(records: List<Whatever>): Disposable {
    return Observable.fromCallable { subscriptionsDao.deleteRecords() }
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe({
                insertRecords(records)
            })
}

这将返回单个一次性。但是,这会是交易吗?可以说,无论出于何种原因,insertRecords()失败并调用onError。房间是否真的会为我删除所有记录?如果没有,那么实现这一目标的正确方法是什么?或者返回CompositeDisposable是正确的方法吗?

0 个答案:

没有答案