RxJava配置在订阅中可见

问题描述 投票:0回答:1

是否有任何清晰,智能的解决方案可以通过其订阅方法来处理?例如。我有一个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
                    }
                })

实现此逻辑的最简单正确的方法是什么?

android kotlin rx-java
1个回答
0
投票

我找到了一个简单的解决方案。只需将变量声明和初始化分为两个步骤。

例如

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

                    if(num == 20.toLong())
                    {
                        observable?.dispose()
                    }
                })
© www.soinside.com 2019 - 2024. All rights reserved.