Rx Java распоряжаться наблюдаемым в подписке - PullRequest
0 голосов
/ 04 марта 2020

Есть ли какое-либо ясное и умное решение для удаления наблюдаемого из метода подписки? Например, у меня есть Observable.interval, который излучает Long каждую секунду. В моем методе подписки я хочу проверить, прошло ли 20 секунд, чем отказаться от подписки.

val observable = Observable.interval(1000,TimeUnit.MILLISECONDS)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(
                { num ->

                    if(num == 20.toLong())
                    {
                        observable.dispose()//I cant call dispose here because variable 'observable' is not avaliable yet
                    }
                })

Какой самый простой и правильный способ достижения этой логики c?

1 Ответ

0 голосов
/ 04 марта 2020

Я нашел одно простое решение. Просто разделите объявление и инициализацию переменной на два шага.

Например

var observable:Disposable? = null
observable = Observable.interval(1000,TimeUnit.MILLISECONDS)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(
                { num ->

                    if(num == 20.toLong())
                    {
                        observable?.dispose()
                    }
                })
...