Skip to content

Instantly share code, notes, and snippets.

@vitusortner
Created October 28, 2019 14:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vitusortner/8d97b9d1ae3b2a8c7032b78ddeaa0381 to your computer and use it in GitHub Desktop.
Save vitusortner/8d97b9d1ae3b2a8c7032b78ddeaa0381 to your computer and use it in GitHub Desktop.
Extension of Observable to delay every succeeding emission
fun <T> Observable<T>.delaySucceeding(interval: Long, timeUnit: TimeUnit): Observable<T> {
return Observable.merge(
this.take(1),
this.skip(1).delayEach(interval, timeUnit)
)
}
private fun <T> Observable<T>.delayEach(interval: Long, timeUnit: TimeUnit): Observable<T> {
return Observable.zip(
this,
Observable.interval(interval, timeUnit),
BiFunction { item, _ -> item }
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment