我有以下代码:
Completable.fromCallable { messagesBO.deleteAllGroupsForMessage(messageId) }
.andThen { Completable.fromAction { messagesBO.storeMessageGroups(messageToGroups) }.subscribe() }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{
},
{ error -> }
))
我还有第二个完成的项目:
Completable.fromAction
,我需要订阅它才能运行fromAction中的函数。但这似乎不是一种干净的方法。
我不一定要使用Completable,因为我没有在onComplete中返回任何内容。还有其他方法可以调用函数并使其自动订阅吗?我实际上可以有多个andThen,并希望将它们链接在一起。
更新:
这是一种解决方案,尽管我不认为这是最好的:
Observable.fromCallable { messagesBO.deleteAllGroupsForMessage(messageId) }
.flatMapCompletable { Completable.fromAction { messagesBO.storeMessageGroups(messageToGroups) } }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{
},
{ error -> }
))
答案 0 :(得分:0)
事实证明,它比我想象的要简单。仅使用map即可自动运行代码,而无需创建可观察的代码:
Observable.fromCallable { messagesBO.deleteAllGroupsForMessage(messageId) }
.map { messagesBO.storeMessageGroups(messageToGroups) }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{
},
{ error -> }
)