RxSwift Creating

關(guān)于創(chuàng)建Observable

#1 Create

image

您可以使用create操作符從零開始創(chuàng)建一個(gè)可觀察對(duì)象榜田,傳遞給這個(gè)操作符一個(gè)函數(shù)牍白,該函數(shù)接受observer作為其參數(shù)脊凰,通過適當(dāng)?shù)卣{(diào)用observeronNextonErroronCompleted方法茂腥,將這個(gè)函數(shù)編寫為一個(gè)可觀察的函數(shù)狸涌。
需要注意的是一個(gè)結(jié)構(gòu)良好的Observable必須調(diào)用一次observeronCompletedonError方法,并且此后不能嘗試調(diào)用observer的任何其他方法最岗。

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
*/ 

#2 Empty/Never

Empty

image

創(chuàng)建一個(gè)不發(fā)出任何項(xiàng)但正常終止的Observable(調(diào)用onCompleted)

Never
創(chuàng)建一個(gè)不發(fā)出任何項(xiàng)且不終止的可觀察對(duì)象

image

Empty/Never這些對(duì)于測(cè)試目的很有用帕胆,有時(shí)也可以與其他可觀測(cè)值結(jié)合使用,或者作為期望其他可觀測(cè)值作為參數(shù)的操作符的參數(shù)般渡。

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
*/ 

#3 From

image

作用將各種其他對(duì)象和數(shù)據(jù)類型轉(zhuǎn)換為可觀察的

let anyArray : [Any] = ["string", 1 , 0.3]

let source = Observable.from(anyArray)

source.subscribe {
    print($0)
}

/*----------
next(string)
next(1)
next(0.3)
completed
*/ 

#4 Interval

創(chuàng)建一個(gè)Observable懒豹,它發(fā)出一個(gè)按給定時(shí)間間隔間隔的整數(shù)序列
Interval操作符返回一個(gè)可觀察到的值,該值發(fā)出一個(gè)無限的升序整數(shù)序列驯用,在兩次發(fā)射之間選擇一個(gè)固定的時(shí)間間隔脸秽。

image
Observable<Int>.interval(1.0, scheduler: MainScheduler.instance)
    .subscribe {
        print($0)
    }
    .disposed(by: bag)
//每1秒發(fā)送一次從0開始升序的整數(shù)

#5 Just

創(chuàng)建一個(gè)發(fā)出特定值的Observable
與From類型,但要注意From會(huì)將數(shù)組里的元素取出再發(fā)送出去蝴乔,而Just只是簡(jiǎn)單的將數(shù)組或?qū)ο笞鳛橐粋€(gè)單獨(dú)值發(fā)送出去记餐。

image
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
*/ 

#6 Range

創(chuàng)建一個(gè)Observable,該對(duì)象發(fā)出特定范圍的序列整數(shù)

image
Observable.range(start: 1, count: 3)
    .subscribe{
        print($0)
    }
    .disposed(by: bag)
    
/*------
next(1)
next(2)
next(3)
completed
*/ 

#7 Repeat

創(chuàng)建一個(gè)Observable薇正,該對(duì)象多次發(fā)出特定的項(xiàng)

image

該操作符重復(fù)發(fā)送一個(gè)項(xiàng)剥扣。

#8 Timer

創(chuàng)建一個(gè)Observable巩剖,它在給定的延遲之后發(fā)出特定的項(xiàng)

image
//5秒后發(fā)送一個(gè)Int值
Observable<Int>.timer(5, scheduler: MainScheduler.instance)
    .subscribe {
        print($0)
    }
    .disposed(by: bag)
/*-------
next(0)
completed
*/

#9 Of

此方法創(chuàng)建一個(gè)Observable,該實(shí)例具有可變數(shù)量的元素钠怯。
功能與From相同佳魔,F(xiàn)rom接受數(shù)組為元素,Of接受可變數(shù)量的元素

let ofObservable = Observable<Any>.of(1,"test",0.3)

ofObservable.subscribe{
    print($0)
}
.disposed(by: bag)

/*-------------
next(1)
next(test)
next(0.3)
completed
*/

文章出處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末晦炊,一起剝皮案震驚了整個(gè)濱河市鞠鲜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌断国,老刑警劉巖贤姆,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異稳衬,居然都是意外死亡霞捡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門薄疚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碧信,“玉大人,你說我怎么就攤上這事街夭∨椴辏” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵板丽,是天一觀的道長(zhǎng)呈枉。 經(jīng)常有香客問我,道長(zhǎng)埃碱,這世上最難降的妖魔是什么猖辫? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮砚殿,結(jié)果婚禮上啃憎,老公的妹妹穿的比我還像新娘。我一直安慰自己瓮具,他們只是感情好荧飞,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布凡人。 她就那樣靜靜地躺著名党,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挠轴。 梳的紋絲不亂的頭發(fā)上传睹,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音岸晦,去河邊找鬼欧啤。 笑死睛藻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的邢隧。 我是一名探鬼主播店印,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼倒慧!你這毒婦竟也來了按摘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤纫谅,失蹤者是張志新(化名)和其女友劉穎炫贤,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體付秕,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡兰珍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了询吴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掠河。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖汰寓,靈堂內(nèi)的尸體忽然破棺而出口柳,到底是詐尸還是另有隱情,我是刑警寧澤有滑,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布跃闹,位于F島的核電站,受9級(jí)特大地震影響毛好,放射性物質(zhì)發(fā)生泄漏望艺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一肌访、第九天 我趴在偏房一處隱蔽的房頂上張望找默。 院中可真熱鬧,春花似錦吼驶、人聲如沸惩激。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽风钻。三九已至,卻和暖如春酒请,著一層夾襖步出監(jiān)牢的瞬間骡技,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留布朦,地道東北人囤萤。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像是趴,于是被迫代替她去往敵國(guó)和親涛舍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345