RxJava 2 + Операции с номерами: возврат одноразовых транзакций с двумя операциями rxjava - PullRequest
0 голосов
/ 03 июня 2018

Я использую комнату базы данных и 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 верный путь?

...