import UIKit
import RxSwift
import RxCocoa
class ObservableViewController: UIViewController {
enum MyError:Error {
case A
case B
}
override func viewDidLoad() {
super.viewDidLoad()
}
func demo13(){
// 這個(gè)方法有兩種用法,一種是創(chuàng)建的Observable序列在經(jīng)過設(shè)定的一段時(shí)間后,產(chǎn)生唯一的一個(gè)元素(也就是只發(fā)送一次)
let observable = Observable<Int>.timer(2, scheduler: MainScheduler.instance)
observable.subscribe{ event in
print(event)
}
// // 創(chuàng)建一個(gè):經(jīng)過設(shè)定的一段時(shí)間,每隔一段時(shí)間產(chǎn)生一個(gè)元素
// let observable = Observable<Int>.timer(2, period: 1, scheduler: MainScheduler.instance)
// observable.subscribe{ event in
// print(event)
// }
}
func demo12(){
// 創(chuàng)建interval(定時(shí)器)每隔一段設(shè)定時(shí)間,會(huì)發(fā)出一個(gè)索引的元素.而且他會(huì)一直發(fā)送下去
let observable = Observable<Int>.interval(1, scheduler: MainScheduler.instance)
observable.subscribe{ event in
print(event)
}
}
func demo11(){
// 相當(dāng)于是創(chuàng)建一個(gè)Observable工廠,通過傳入一個(gè)block來執(zhí)行延遲observable序列創(chuàng)建的行為,而這個(gè)block里就是真正的實(shí)例化序列對(duì)象的地方
// 用于標(biāo)記是基數(shù),還是偶數(shù)
var isOdd = true
// 使用deferred()方法延遲Observable序列的初始化,傳入的block來實(shí)現(xiàn)Observable序列的初始化并且返回
let factory:Observable<Int> = Observable.deferred {
// 讓每次執(zhí)行這個(gè)block時(shí)候都會(huì)讓奇偶進(jìn)行交替
isOdd = !isOdd
if isOdd{
return Observable.of(1,2)
}else{
return Observable.of(3,4)
}
}
// 訂閱測(cè)試
factory.subscribe{ event in
print(event)
}
factory.subscribe{event in
print(event)
}
}
func demo10(){
// 創(chuàng)建observable
let observable = Observable<String>.create { (observable) -> Disposable in
// 對(duì)訂閱者發(fā)出了.next事件,且攜帶一個(gè)數(shù)據(jù)"123"
observable.onNext("123")
// 對(duì)訂閱者發(fā)出了.completed
observable.onCompleted()
// 因?yàn)橐粋€(gè)訂閱行為會(huì)有一個(gè)Disposeable類型的返回值,所以在結(jié)尾一定要return
return Disposables.create()
}
// 訂閱observable
observable.subscribe(onNext: { (event) in
print(event)
})
observable.subscribe{
print($0)
}
observable.subscribe{
print($0)
}
}
func demo9(){
// 創(chuàng)建一個(gè)只有當(dāng)所有的判斷條件為True的時(shí)候,才會(huì)給出動(dòng)作的Observable
let observable = Observable.generate(initialState: 0, condition: {
$0 <= 10
}) {
$0 + 2
}
observable.subscribe(onNext: { (event) in
print(event)
}).disposed(by: rx_disposeBag)
}
func demo8(){
// 創(chuàng)建一個(gè)可以無(wú)限發(fā)出給定元素的Event的Observable序列
let observable = Observable.repeatElement(1)
observable.subscribe(onNext: { (event) in
print(event)
}).disposed(by: rx_disposeBag)
}
func demo7(){
// 創(chuàng)建一個(gè)一這個(gè)范圍內(nèi)所有制作為初始值的Observable序列
let observable = Observable.range(start: 1, count: 4)
}
func demo6(){
// 直接發(fā)送一個(gè)錯(cuò)誤的Observable序列
let observable = Observable<Int>.error(MyError.A)
}
func demo5(){
// 創(chuàng)建一個(gè)永遠(yuǎn)不會(huì)發(fā)出event的序列
let observable = Observable<Int>.never()
}
func demo4(){
// 創(chuàng)建一個(gè)空內(nèi)容的Observable序列
let observable = Observable<Int>.empty()
}
func demo3(){
//1 該方法需要一個(gè)數(shù)組參數(shù)
let observable = Observable.from(["A","B","C","D"])
}
func demo2(){
//1 該方法可以接受可變數(shù)量的參數(shù)(必須要是同類型)
//2 我們沒有顯示地聲明Observable 的泛型,swift也會(huì)自動(dòng)推到
let observable = Observable.of("A","B")
observable.subscribe(onNext: { (event) in
print(event)
}).disposed(by: rx_disposeBag)
}
func demo1(){
//1 該方法通過傳入一個(gè)默認(rèn)值來初始化
//2 observable的類型為Observable<Int> 指定Observable攜帶的數(shù)據(jù)類型必須是Int類型的
let observable = Observable<Int>.just(5)
print(observable)
observable.subscribe(onNext: { (event) in
print(event)
}).disposed(by: rx_disposeBag)
}
}
Observable介紹,創(chuàng)建可觀察序列
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 三、Observable 介紹 Observable 作為 Rx 的根基,我們首先對(duì)它要有一些基本的了解。 1,O...
- 這一個(gè)問題困擾了我許久,怎么用vue搭建開發(fā)環(huán)境并且可以請(qǐng)求本地?cái)?shù)據(jù),因?yàn)閣ebpack-dev-server在編...