Хотел получить api после получения истинного значения от наблюдаемого эмиттера в RxJava - PullRequest
0 голосов
/ 30 марта 2020

Я работаю на Rx Java. Я создал случайный логический поток значений true и false для наблюдаемого класса.

Наблюдаемый класс должен повторяться через случайную продолжительность x секунд (от 10 до 90 секунд). После каждого истинного значения мне нужно вызывать API и обновлять интерфейс.

Я написал следующий код, чтобы генерировать случайные логические значения и передавать их через наблюдаемые. Но как повторить наблюдаемое после каждых x секунд?

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);
                }
            }

1 Ответ

1 голос
/ 31 марта 2020

Я думаю, 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);
            }
        }
...