假设有一个 Dao
具有以下两种方法的类:
1)
delete(items: List<Item>): Completable
2)
insert(items: List< Item >): Single<List<Long>>
如何将它们链接到
@transaction
Dao
中的方法以“删除方法”开头然后返回“插入方法”结果的类?我想要一个带有这样签名的方法:
@Transaction
fun deleteAndInsert(): Single<List<Long> > {
...
}
最佳答案
我假设您的主要目标是返回类型为 deleteAndInsert()
如Single
.
你可以通过小的修改来实现
delete()
和 insert()
功能同步。 @Transaction
只能同步工作,我们需要创建另一个调用 delete()
的函数和 insert()
.另外,用 @Transaction
注释这个函数Single
的新函数并调用上述函数。 abstract class SampleDao{
protected abstract fun delete()
protected abstract fun insert(items: List<Item>) : List<Long>
@Transaction
protected open fun deleteAndInsertSync(items: List<Item>): List<Long>{
delete()
return insert(items)
}
fun deleteAndInsert(items:List<Item>): Single<List<Long>>{
return Single.create {
it.onSuccess(deleteAndInsertSync(items))
}
}
}
关于android - 如何使用 Room Db 返回 Rx Single 交易?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55463342/