您能夠使用create操做符從零開始建立一個可觀察對象,傳遞給這個操做符一個函數,該函數接受observer
做爲其參數,經過適當地調用observer
的onNext
、onError
和onCompleted
方法,將這個函數編寫爲一個可觀察的函數。 須要注意的是一個結構良好的Observable
必須調用一次observer
的onCompleted
或onError
方法,而且此後不能嘗試調用observer
的任何其餘方法。git
let source : Observable = Observable.create { observer in
for i in 1...5 {
observer.on(.next(i))
}
observer.on(.completed)
return Disposables.create {
print("disposed")
}
}
source.subscribe {
print($0)
}
/*----- next(1) next(2) next(3) next(4) next(5) completed disposed */
複製代碼
Empty github
建立一個不發出任何項但正常終止的Observable
(調用onCompleted)數組
Never 建立一個不發出任何項且不終止的可觀察對象函數
Empty/Never這些對於測試目的頗有用,有時也能夠與其餘可觀測值結合使用,或者做爲指望其餘可觀測值做爲參數的操做符的參數。測試
let never = Observable<Any>.never()
let empty = Observable<Any>.empty()
never.subscribe { (event) in
print("never")
print(event)
}
.disposed(by: bag)
empty.subscribe { (event) in
print("empty")
print(event)
}
.disposed(by: bag)
/*------ empty completed */
複製代碼
做用將各類其餘對象和數據類型轉換爲可觀察的ui
let anyArray : [Any] = ["string", 1 , 0.3]
let source = Observable.from(anyArray)
source.subscribe {
print($0)
}
/*---------- next(string) next(1) next(0.3) completed */
複製代碼
建立一個Observable
,它發出一個按給定時間間隔間隔的整數序列 Interval操做符返回一個可觀察到的值,該值發出一個無限的升序整數序列,在兩次發射之間選擇一個固定的時間間隔。spa
Observable<Int>.interval(1.0, scheduler: MainScheduler.instance)
.subscribe {
print($0)
}
.disposed(by: bag)
//每1秒發送一次從0開始升序的整數
複製代碼
建立一個發出特定值的Observable 與From類型,但要注意From會將數組裏的元素取出再發送出去,而Just只是簡單的將數組或對象做爲一個單獨值發送出去。code
let source = Observable.just(1, 2, 3)
source.subscribe {
print($0)
}
let source2 = Observable.just([1,2,3])
source2.subscribe {
print($0)
}
/* ------ next((1, 2, 3)) completed next([1, 2, 3]) completed */
複製代碼
建立一個Observable
,該對象發出特定範圍的序列整數cdn
Observable.range(start: 1, count: 3)
.subscribe{
print($0)
}
.disposed(by: bag)
/*------ next(1) next(2) next(3) completed */
複製代碼
建立一個Observable
,該對象屢次發出特定的項 server
該操做符重複發送一個項。
建立一個Observable
,它在給定的延遲以後發出特定的項
//5秒後發送一個Int值
Observable<Int>.timer(5, scheduler: MainScheduler.instance)
.subscribe {
print($0)
}
.disposed(by: bag)
/*------- next(0) completed */
複製代碼
此方法建立一個Observable
,該實例具備可變數量的元素。 功能與From相同,From接受數組爲元素,Of接受可變數量的元素
let ofObservable = Observable<Any>.of(1,"test",0.3)
ofObservable.subscribe{
print($0)
}
.disposed(by: bag)
/*------------- next(1) next(test) next(0.3) completed */
複製代碼