RxJava 2运算符组合,只提供一组中的第一个值
我的想法是,当我多次调用RxJava 2运算符组合,只提供一组中的第一个值,java,android,rx-java,rx-android,Java,Android,Rx Java,Rx Android,我的想法是,当我多次调用publishSubject.onNext(someValue)时,我只需要像debounce操作符那样获取一个值,但它会传递最后一个值,我需要跳过所有值,除了第一个值,直到我停止调用onNext()1秒。 我尝试过使用类似于throttleFirst(1000,TimeUnit.ms)的东西,但它不像debounce那样工作,它只是让windows在每次传递后立即传递下一个值,并在1秒后立即传递下一个值。您可以使用第一个操作符。比如: Observable.first(
publishSubject.onNext(someValue)
时,我只需要像debounce
操作符那样获取一个值,但它会传递最后一个值,我需要跳过所有值,除了第一个值,直到我停止调用onNext()
1秒。
我尝试过使用类似于throttleFirst(1000,TimeUnit.ms)的东西,但它不像debounce那样工作,它只是让windows在每次传递后立即传递下一个值,并在1秒后立即传递下一个值。您可以使用第一个操作符。比如:
Observable.first()
只需要第一个值即可尝试以下操作:
// Observable<T> stream = ...;
stream.window(stream.debounce(1, TimeUnit.Seconds))
.flatMap(w -> w.take(1));
//可观测流=。。。;
stream.window(stream.debounce(1,时间单位秒))
.flatMap(w->w.take(1));
说明:如果我理解正确,您希望在1秒之前未发射任何项目时发射项目。这相当于将项目后面的第一个元素取消抖动1秒。下面的大理石图也可能有帮助:
可以发布您的示例代码吗?