【问题标题】:Wanted to fetch api after getting true value from observable emitter in RxJava从 RxJava 中的可观察发射器获得真实值后想要获取 api
【发布时间】:2020-03-30 17:37:41
【问题描述】:

我正在研究 RxJava。我为 observable 类创建了一个由真假值组成的随机布尔流。

可观察类应在 x 秒(10 到 90 秒之间)的随机持续时间后重复。在每个真实值之后,我需要调用 API 并更新 UI。

我编写了以下代码来生成随机布尔值并将它们传递给 observable。但是如何在每 x 秒后重复 observable?

val r = Random
        val apiResultStream = Observable.create(object : Observable.OnSubscribe<Boolean> {
            override fun call(subscriber: Subscriber<in Boolean>) {
                // emit true or false
                subscriber.onNext(r.nextBoolean())
            }
        }).repeat(10)

        apiResultStream
            .subscribe { result ->
                if (result === true) {

                    Log.v("ABC",""+result);
                    callAPI()

                } else {
                    //callFailureApi()
                    Log.v("ABC",""+result);
                }
            }

【问题讨论】:

  • 这段代码看起来是正确的。您究竟需要什么帮助?
  • @PrashantPandey 想每 30 秒调用一次 observable

标签: android kotlin rx-java


【解决方案1】:

我猜Observable.interval(30, TimeUnit.SECONDS) 是你需要的:

Observable.interval(30, TimeUnit.SECONDS) //also can specify scheduler
    .flatMap { apiResultStream }
    .subscribe { result ->
            if (result === true) {

                Log.v("ABC",""+result);
                callAPI()

            } else {
                //callFailureApi()
                Log.v("ABC",""+result);
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 2020-04-04
    • 2018-11-18
    • 2019-12-31
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多