【发布时间】:2018-02-15 15:46:46
【问题描述】:
我有以下代码,它执行一次调用,获取调用的结果,这是一个布尔值,然后如果结果为 false,则进行第二次调用。
private fun linkEmailAndTextTogether(contactPhoneNumber: ContactPhoneNumbers,phoneNumber : PhoneNumber) {
val single = SingleOnSubscribe<Boolean> {
contactPhoneNumber.doesEmailContactExist(phoneNumber)
}
Single.create(single)
.subscribeOn(Schedulers.io())
.subscribeWith(object : SingleObserver<Boolean> {
override fun onSuccess(phoneNumberDoesExist: Boolean) {
if (!phoneNumberDoesExist) {
val completable = CompletableOnSubscribe {
contactPhoneNumber.linkEmailAndTextTogether(phoneNumber)
}
compositeDisposable.add(Completable.create(completable)
.subscribeOn(Schedulers.io())
.subscribe())
}
}
override fun onSubscribe(d: Disposable) {
compositeDisposable.add(d)
}
override fun onError(e: Throwable) {
Timber.e(e,e.localizedMessage)
}
})
}
似乎应该有一种更优雅的方式在某种链中执行此操作。
【问题讨论】:
-
这并没有真正帮助我理解我应该做什么。不过谢谢。
-
第二个返回值是否总是布尔值?
-
@Blackbelt - 是的
-
那你为什么不使用地图运算符之一呢?
标签: android reactive-programming rx-java2