// 創(chuàng)建一個被觀察者,和訂閱者
func create() {
_ = Observable<String>.create { (observerOfString) -> Disposable in
print("observer created")
observerOfString.onNext("??")
observerOfString.onCompleted()
return Disposables.create()
}.subscribe({ (event) in
print(event)
})
}
// 綁定一個按鈕的點擊事件
func tap() {
_ = btn.rx.tap.asObservable().subscribe({ (_) in
print("點擊了按鈕")
})
}
// never 創(chuàng)建一個序列不會終止也不會發(fā)出任何事件
func never() {
let neverObserver = Observable<String>.never()
neverObserver.subscribe { (_) in
print("never")
}.disposed(by: disposeBag)
}
// empyt 空序列,只會發(fā)出一個完成事件
func empty() {
let emptyObserver = Observable<Int>.empty()
emptyObserver.subscribe { (_) in
print("empty")
}.disposed(by: disposeBag)
}
// just 創(chuàng)建一個單個元素的序列
func just() {
let justObserver = Observable.just(10)
justObserver.subscribe { (event) in
print(event)
}.disposed(by: disposeBag)
}
// of 使用固定數(shù)量的元素創(chuàng)建一個序列
func of() {
let ofObserver = Observable.of(10,12,14,16)
ofObserver.subscribe(onNext: { (element) in
print(element)
}, onError: { (error) in
print(error)
}, onCompleted: {
print("complete")
}) {
print("disposeBag")
}.disposed(by: disposeBag)
ofObserver.subscribe(onNext: { (element) in
print(element)
}).disposed(by: disposeBag)
}
```
// from 從一個序列創(chuàng)建一個可被觀察的序列
func from () {
let fromObserver = Observable.from(["??","??","??","??"])
fromObserver.subscribe { (event) in
print(event)
}.disposed(by: disposeBag)
}
// range 創(chuàng)建一個發(fā)出一系列順序`整數(shù)`然后終止的序列
func range () {
let rangeObserver = Observable<Int>.range(start: 1, count: 10)
rangeObserver.subscribe { (event) in
print(event)
}.disposed(by: disposeBag)
}
```
// repeatElement 創(chuàng)建一個給予元素的無限序列
func repeatElement() {
Observable.repeatElement("??").takeLast(4).subscribe { (event) in
print(event)
}.disposed(by: disposeBag)
}
```
// generate 創(chuàng)建一個滿足指定條件的序列
func generate() {
Observable.generate(initialState: 10, condition: { (element) -> Bool in
return element < 14
}) { (element) -> Int in
return element + 1
}.subscribe { (event) in
print(event)
}.disposed(by: disposeBag)
}
```
// deferred 只有當訂閱者訂閱的時候才會去創(chuàng)建序列
func deferred() {
var count = 1
let deferredSequence = Observable<String>.deferred { () -> Observable<String> in
print("create \(count)")
count += 1
return Observable.create({ (observer) -> Disposable in
print("emitting...")
observer.onNext("1")
observer.onNext("2")
observer.onNext("3")
return Disposables.create()
})
}
deferredSequence.subscribe { (event) in
print(event)
}.disposed(by: disposeBag)
deferredSequence.subscribe { (event) in
print(event)
}.disposed(by: disposeBag)
}
enum TestError: Error {
case test
}
```
// 創(chuàng)建一個沒有元素但是以錯誤終止的序列
func error() {
Observable<Int>.error(TestError.test)
.subscribe { (error) in
print(error)
}
.disposed(by: disposeBag)
}
// 攔截器隧熙,只能攔截不能修改
func doOn() {
Observable.of("1","4","9")
.do(onNext: { (element) in
print("攔截到的值" + element)
})
.subscribe { (event) in
print(event)
}
.disposed(by: disposeBag)
}
// Subject: 是一個橋梁纹坐,即是被觀察者又是訂閱者
func subject() {
let subject = PublishSubject<String>()
subject.subscribe().disposed(by: disposeBag)
subject.onNext("1")
subject.onNext("2")
subject.subscribe().disposed(by: disposeBag)
subject.onNext("10")
subject.onNext("12")
}