gpt4 book ai didi

android - RxJava - 使用 flowables 异步方式

转载 作者:行者123 更新时间:2023-11-29 00:58:11 25 4
gpt4 key购买 nike

重新编辑:我将使用此方法的结果来初始化我 View 中某些按钮的可见性 接受的答案在理论上似乎不错,但第一种方法的返回值是 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

最佳答案

我重新编辑了我的答案,您需要以下返回类型。

fun doesExist(): Flowable<Single<Boolean>> {
return Flowable.just(Single.just(SDK.searchContact("contact")).map{ it.isEmpty()})
}

关于android - RxJava - 使用 flowables 异步方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53085846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com