Skip to content

Instantly share code, notes, and snippets.

fun <T> Observable<T>.debounceIf(
predicate: (T) -> Boolean,
timeout: Long,
unit: TimeUnit,
scheduler: Scheduler
): Observable<T> {
return this.debounce(timeout, unit, scheduler)
}
fun <T> Observable<T>.debounceIf(
predicate: (T) -> Boolean,
timeout: Long,
unit: TimeUnit,
scheduler: Scheduler
): Observable<T> {
return Observable.merge(
this.filter { predicate(it) },
this.filter { !predicate(it) }
)
fun <T> Observable<T>.debounceIf(
predicate: (T) -> Boolean,
timeout: Long,
unit: TimeUnit,
scheduler: Scheduler
): Observable<T> {
return Observable.merge(
filter { predicate(it) }
.debounce(timeout, unit, scheduler),
filter { !predicate(it) }
val source = PublishSubject.create<Int>()
source
.debounceIf({ it.isOdd }, 2, SECONDS, Schedulers.io())
.subscribe { print(it) }
source.onNext(1)
source.onNext(2)
source.onNext(3)
source.onNext(4)
Thread.sleep(10000)
fun <T> Observable<T>.debounceIf(
predicate: (T) -> Boolean,
timeout: Long,
unit: TimeUnit,
scheduler: Scheduler
): Observable<T> {
return Observable.merge(
debounce(timeout, unit, scheduler)
.filter { predicate(it) },
filter { !predicate(it) }
val source = PublishSubject.create<Int>()
source
.debounceIf({ it.isOdd }, 2, SECONDS, Schedulers.io())
.subscribe { print(it) }
source.onNext(1)
source.onNext(2)
source.onNext(3)
source.onNext(4)
Thread.sleep(10000)
fun <T> Observable<T>.debounceIf(
...
): Observable<T> {
return Observable.merge(
debounce(timeout, unit, scheduler)
.filter { predicate(it) }, // The first stream
filter { !predicate(it) } // The second stream
)
}
val scheduler = TestScheduler()
val source = Observable.just(1)
.doOnSubscribe {
println("Hello World")
}
source
.debounceIf({ it == 1 }, 2, SECONDS, scheduler)
.test()
val scheduler = TestScheduler()
val source = Observable.just(1)
.doOnSubscribe {
println("Hello World")
}
source
.debounceIf({ it == 1 }, 2, SECONDS, scheduler)
.test()
fun <T> Observable<T>.debounceIf(
predicate: (T) -> Boolean,
timeout: Long,
unit: TimeUnit,
scheduler: Scheduler
): Observable<T> {
return this.publish { sharedSrc ->
Observable.merge(
sharedSrc.debounce(timeout, unit, scheduler)
.filter { predicate(it) },