Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save cmc5788/d6ffd89b1de635b6637df451fc9158f2 to your computer and use it in GitHub Desktop.
Save cmc5788/d6ffd89b1de635b6637df451fc9158f2 to your computer and use it in GitHub Desktop.
cool swift rx lingering
public func shareReplayLatestWhileConnectedWithLinger(_ delayTime : RxTimeInterval, scheduler : SchedulerType = Schedulers.main) -> RxSwift.Observable<Self.E> {
let sharedSource = self.concat(Observable.empty()
.delaySubscription(delayTime, scheduler: scheduler))
.shareReplayLatestWhileConnected()
return Observable<Self.E>.create { observer in
let sub = sharedSource.subscribe(onNext: {
observer.on(.next($0))
}, onError: {
observer.on(.error($0))
}, onCompleted: {
observer.on(.completed)
})
return Disposables.create {
_ = scheduler.scheduleRelative((), dueTime: delayTime) { _ in
sub.dispose()
return Disposables.create()
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment