Rx:如何取消通话?
Rx: How to cancel call?
例如我们有一个电话:
getObsevable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(::onSuccess, ::onError))
有没有办法在条件为真时不启动它?例如:
getObsevable()
.stop({ Calendar.getInstance().get(Calendar.MINUTE) % 2 == 0 })
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(::onSuccess, ::onError))
在这段代码中,我的意思是如果当前分钟是奇数,我们不应该启动 observable。如果当前分钟是偶数,则启动它。
将它分配给一个一次性的,并在开始另一个调用之前处理它,或者在任何你需要处理它的地方
Disposable disposable;
public void createDisposableWithMyObservable(){
if(disposable != null) disposable.dispose();
disposable = getObsevable()
.stop({ Calendar.getInstance().get(Calendar.MINUTE) % 2 == 0 })
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(::onSuccess, ::onError));
}
是的,您可以使用 filter
来实现。那么当使用过滤器时会发生什么,如果条件不满足,下面的流就不会被执行。
在您的情况(或示例)中,如果当前分钟是奇数,则不会调用订阅方法。但是,如果它是偶数,流将按照它所写的方式工作。
getObservable()
.filter({ Calendar.getInstance().get(Calendar.MINUTE) % 2 == 0 })
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(::onSuccess, ::onError))
您可以在这里阅读 -> http://reactivex.io/documentation/operators/filter.html
例如我们有一个电话:
getObsevable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(::onSuccess, ::onError))
有没有办法在条件为真时不启动它?例如:
getObsevable()
.stop({ Calendar.getInstance().get(Calendar.MINUTE) % 2 == 0 })
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(::onSuccess, ::onError))
在这段代码中,我的意思是如果当前分钟是奇数,我们不应该启动 observable。如果当前分钟是偶数,则启动它。
将它分配给一个一次性的,并在开始另一个调用之前处理它,或者在任何你需要处理它的地方
Disposable disposable;
public void createDisposableWithMyObservable(){
if(disposable != null) disposable.dispose();
disposable = getObsevable()
.stop({ Calendar.getInstance().get(Calendar.MINUTE) % 2 == 0 })
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(::onSuccess, ::onError));
}
是的,您可以使用 filter
来实现。那么当使用过滤器时会发生什么,如果条件不满足,下面的流就不会被执行。
在您的情况(或示例)中,如果当前分钟是奇数,则不会调用订阅方法。但是,如果它是偶数,流将按照它所写的方式工作。
getObservable()
.filter({ Calendar.getInstance().get(Calendar.MINUTE) % 2 == 0 })
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(::onSuccess, ::onError))
您可以在这里阅读 -> http://reactivex.io/documentation/operators/filter.html