Comletable.create{} 的 RxJava 可完成行为
RxJava Completable behavior of Comletable.create{}
我们在进行代码审查时发现了这段代码:
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)
}
}
我们在进行代码审查时发现了这段代码:
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)
}
}