Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何仅缓冲来自rx的最新排放。在背压期间可观察到_Java_Android_Reactive Programming_Rx Java_Backpressure - Fatal编程技术网

Java 如何仅缓冲来自rx的最新排放。在背压期间可观察到

Java 如何仅缓冲来自rx的最新排放。在背压期间可观察到,java,android,reactive-programming,rx-java,backpressure,Java,Android,Reactive Programming,Rx Java,Backpressure,我有一个rx.Observable,它将任务的进度发送到onNext()。onNext()排放有时会发生得太快,以至于观察者无法跟上,从而导致故障。我只想通过缓冲可观测的的最新排放来处理背压 例如: observeable发射1,而observest接收1 当观察者仍在处理1时,observeable发出2、3和4 Observer完成处理1并开始处理4(减少排放2和3) 这似乎是处理Rx可观察进度的常见情况,因为您通常只关心使用最新进度信息更新UI。然而,我还没有弄明白如何做到这一点 有人

我有一个
rx.Observable
,它将任务的进度发送到
onNext()
onNext()
排放有时会发生得太快,以至于
观察者无法跟上,从而导致故障。我只想通过缓冲
可观测的
的最新排放来处理背压

例如:

  • observeable
    发射1,而
    observest
    接收1
  • 当观察者仍在处理1时,
    observeable
    发出234
  • Observer
    完成处理1并开始处理4(减少排放23
这似乎是处理Rx可观察进度的常见情况,因为您通常只关心使用最新进度信息更新UI。然而,我还没有弄明白如何做到这一点


有人知道如何使用RxJava实现这一点吗?

可观察。debounce
听起来像是您需要的。在下面的示例中,仅可在每个200ms窗口中观察到的最新发射将发送给观察者

observable
    .debounce(200, TimeUnit.MILLISECONDS)
    .subscribe(observer);

onBackPressureLatest
是您的朋友。:)

这会起作用,我认为
onBackPressureLatest
更接近原始问题
debounce
绑定到给定的时间范围,这对于UI输入之类的事情非常有用。谢谢!那正是我要找的!显然我需要更新RxJava-P作为补充说明,我必须在
subscribeOn(Schedulers.io())
observeOn(AndroidSchedulers.mainThread())
之间调用此运算符才能使其工作。我们能为RxJava2获得此方面的更新吗?我试图使用toFlowable(BackpressureStrategy.LATEST),但它似乎在排队等待所有请求并处理这些请求。