RxSwift Basics
Observables
Basic Examples of Observables and Observers
// Create - this is a cold observable. Will only start executing when an observer
subscribes.
let observable = Observable<String>.create { (observer) -> Disposable in
dispatch_async(dispatch_get_main_queue(), {
NSThread.sleepForTimeInterval(10)
observer.onNext("I'm still Reactive!")
observer.onCompleted()
})
return NopDisposable.instance
}
// now we make an observer that subscribes to the above observable.
// note: subscribeNext will only react to Next events.
observable.subscribeNext { (element) in
print(element)
}.addDisposableTo(disposeBag)
// Just - creates an observable that emits one value once and that's it.
// the sequence is: .Next("Hello") -> .Completed
let observable2 = Observable<String>.just("I'm Reactive!")
observable2.subscribeNext { (element) in
print(element)
}.addDisposableTo(disposeBag)
observable2.subscribeCompleted {
print("I'm done.")
}.addDisposableTo(disposeBag)
// Interval - increments an Int from 0 every 0.3 seconds (in this example).
// Used to define threading/async behavior
let observable3 = Observable<Int>.interval(0.3, scheduler: MainScheduler.instance)
observable3.subscribeNext { (element) in
print(element)
}.addDisposableTo(disposeBag)
// Repeat - repeats a given value infinitely.
let observable4 = Observable<String>.repeatElement("I'm Reactive I'm Reactive!")
observable4.subscribeNext { (element) in
print(element)
}.addDisposableTo(disposeBag)