Use `SchedulerType.scheduleRecursive` and `CompositeDisposable.removeDisposable`.

This commit is contained in:
tarunon 2016-02-29 18:12:08 +09:00
parent 74e9262f42
commit 7c73060c5c
1 changed files with 6 additions and 5 deletions

View File

@ -38,13 +38,14 @@ class DelaySink<ElementType, O: ObserverType where O.E == ElementType>
// }
default:
let delayDisposable = SingleAssignmentDisposable()
if let _ = _group.addDisposable(delayDisposable) {
delayDisposable.disposable = _scheduler.scheduleRecursive((), dueTime: _dueTime) { _ in
self.forwardOn(event)
if let key = _group.addDisposable(delayDisposable) {
delayDisposable.disposable = _scheduler.scheduleRecursive((self, key), dueTime: _dueTime) { state, _ in
let (sink, key) = state
sink.forwardOn(event)
sink._group.removeDisposable(key)
if event.isStopEvent {
self.dispose()
sink.dispose()
}
delayDisposable.dispose()
}
}
}