gpt4 book ai didi

java - 有条件地订阅 rxJava2 Observable

转载 作者:行者123 更新时间:2023-12-02 01:37:36 26 4
gpt4 key购买 nike

我有一个 rxJava2 Observable,我想有条件地订阅它。我将进行网络调用的场景,并且仅当设备连接到网络时才会调用 subscribe()。我想做如下的事情

     observable. 
subsribeWhenConditionIsMet(

if (connected to internet) {
mPresentation.showNetworkError();
return;
}

subscribe();
}
)

关于如何做到这一点有什么建议吗?还有更好的方法吗?

最佳答案

目前 RxJava2 中还没有这样的方法。但如果您使用 kotlin,则可以使用扩展函数来实现。像下面这样声明它。

fun <T> Observable<T>.subscribeIf(predicate: () -> Boolean) {
if (predicate()) {
subscribe()
}
}

通话时:

anyObservable()
.subscribeIf { isConnectedToInternet() }

额外

如果您想处理后备情况,您可以像下面这样编写扩展,并将后备 lambda 设为可选,以便我们可以在不需要时省略它。

fun <T> Observable<T>.subscribeIf(predicate: () -> Boolean, fallback: () -> Unit = {}) {
if (predicate()) {
subscribe()
} else {
fallback()
}
}

通话时:

anyObservable()
.subscribeIf(
predicate = { isConnectedToInternet() },
fallback = { showError() }
)
}

注意:您也可以从 Java 调用它,请参阅此链接 https://stackoverflow.com/a/28364983/3544839

关于java - 有条件地订阅 rxJava2 Observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54999302/

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