【发布时间】:2018-10-31 14:33:30
【问题描述】:
重新编辑:我将使用此方法的结果来初始化视图中某些按钮的可见性 接受的答案在理论上似乎不错,但第一种方法的返回值是 Flowable> 而不是 Flowable。因此我不能将它作为参数传递给订阅,因为它需要 Flowable 但它是 Flowable>
编辑前的问题
我正在使用 RxJava 来观察我需要从 SDK 调用的方法。使用这种方法,我试图断言某些东西的存在,但我不知道调用需要多长时间,所以我很难说在 x 秒后终止订阅。
override fun doesExist(): Boolean {
var doesExist = false
var subscription : Subscription
val flowable = Flowable.just(SDK.searchContact("contact"))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : FlowableSubscriber<Flowable<List<Contact>>> {
override fun onSubscribe(s: Subscription) {
subscription = s
}
override fun onNext(t: Flowable<List<Contact>>?) {
doesExist = true
}
override fun onComplete() {
Log.d("tagtagcomplete", "tagtagcomplete")
}
override fun onError(e: Throwable?) {
Log.d("tagtagerror", "tagtagerror")
}
return doesExist
}
所以我想要做的是,如果我从 searchContract 方法中没有得到任何结果,则返回 true,如果得到结果,则返回 false。在使用 observables 时,我可以创建一个订阅对象并调用它的方法,但我不知道如何使用 flowables 正确地做到这一点。
我的困惑如下:sdk 方法返回一个Flowable<List<Contact>>> 但我认为我需要检查一个联系人是否只存在一次并停止
现在我的方法没有进入 onError、onNext 或 onComplete。它只返回doesExist
【问题讨论】: