我们正在进行代码审查,我们得到了以下代码:
fun saveId(id: Int): Completable {
return Completable.defer {
preferencesHelper.saveId(id)
Completable.complete()
}
}
我的同事认为应该改为:
fun saveId(id: Int): Completable {
return Completable.defer {
Completable.create { emitter ->
try {
preferencesHelper.saveId(id)
emitter.onComplete()
} catch (t: Throwable) {
emitter.onError(t)
}
}
}
}
我们需要帮助来澄清这两种方法在异步执行方面是否相同?
它们实际上是相同的,但不必要地冗长。使用fromAction
可以简化它们
fun saveId(id: Int): Completable {
return Completable.fromAction {
preferencesHelper.saveId(id)
}
}