Skip to content

Instantly share code, notes, and snippets.

@RyogaK
Created April 24, 2017 10:25
Show Gist options
  • Save RyogaK/58fd83581618a848dd90c56964a35589 to your computer and use it in GitHub Desktop.
Save RyogaK/58fd83581618a848dd90c56964a35589 to your computer and use it in GitHub Desktop.
RxSwift's custom operator for repeating.
//
// Repeat.swift
//
// Created by Ryoga Kitagawa on 4/24/17.
//
import RxSwift
extension ObservableType {
func `repeat`() -> Observable<E> {
return Observable<E>.create { observer -> Disposable in
let disposeBag = DisposeBag()
var subscribe: (Self -> ())!
subscribe = { _self in
_self.subscribe { event in
switch event {
case .Completed:
subscribe(_self)
default:
observer.on(event)
}
}
.addDisposableTo(disposeBag)
}
subscribe(self)
return AnonymousDisposable { [disposeBag] _ in let _ = disposeBag }
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment