Filter

過濾操作符(Filter)

  • ignoreElements

過濾掉所有的.next事件

let strikes = PublishSubject<String>()
let disposeBag = DisposeBag()
strikes.ignoreElements().subscribe { _ in
    print("You're out!")
}
.disposed(by: disposeBag)
  • elementAt

只取elementAt指定的一個(gè)事件青柄,其他事件全部忽略

let strikes = PublishSubject<String>()
let disposeBag = DisposeBag()
strikes.elementAt(2).subscribe(onNext: { _ in
    print("You're out!")
})
.disposed(by: disposeBag)
  • filter

只取滿足filter條件的

let disposeBag = DisposeBag()
Observable.of(1, 2, 3, 4, 5, 6).filter { integer in
      integer % 2 == 0
}.subscribe(onNext: {
      print($0)
})
.disposed(by: disposeBag)

跳過操作符(Skip)

  • skip

跳過前面幾個(gè)事件

let disposeBag = DisposeBag()
Observable.of("A", "B", "C", "D", "E", "F").skip(3).subscribe(onNext: {
  print($0) 
})
.disposed(by: disposeBag)
  • skipWhile

跳過所有滿足條件的事件旭绒,直到碰到一個(gè)不滿足條件的事件弃鸦,發(fā)送這個(gè)不滿足條件的事件赴精,及后面所有的事件晚凿。

let disposeBag = DisposeBag()
Observable.of(2, 2, 3, 4, 4)
.skipWhile { integer in
  integer % 2 == 0
}.subscribe(onNext: {
  print($0)
})
.disposed(by: disposeBag)
  • skipUntil

同時(shí)監(jiān)聽另外一個(gè)Observerable颈畸,只有這個(gè)Observerable發(fā)送了next事件伊佃,才會(huì)接收本身的事件

let disposeBag = DisposeBag()
let subject = PublishSubject<String>()
let trigger = PublishSubject<String>()
subject.skipUntil(trigger).subscribe(onNext: {
  print($0) 
})
.disposed(by: disposeBag)

取操作符(Take)

和Skip事件相反

  • take

取前面幾個(gè)事件

let disposeBag = DisposeBag()
Observable.of(1, 2, 3, 4, 5, 6).take(3).subscribe(onNext: {
  print($0) 
})
.disposed(by: disposeBag)
  • takeWhile

取所有滿足條件的事件响蕴,直到碰到一個(gè)不滿足條件的事件骤铃,這個(gè)不滿足條件的事件拉岁,及后面所有的事件都忽略

let disposeBag = DisposeBag()
Observable.of(2, 2, 4, 4, 6, 6)
  .enumerated()
  .takeWhile { index, integer in
    integer % 2 == 0 && index < 3
  }
  .subscribe(onNext: {
    print($0) 
    })
  .disposed(by: disposeBag)

.enumerated()的作用是,給序列生成索引index

  • takeWhile

同時(shí)監(jiān)聽另外一個(gè)Observerable惰爬,只有這個(gè)Observerable發(fā)送了next事件喊暖,才停止接收本身的事件

let disposeBag = DisposeBag()
let subject = PublishSubject<String>()
let trigger = PublishSubject<String>()
subject.takeUntil(trigger).subscribe(onNext: {
  print($0) 
})
  .disposed(by: disposeBag)

變化操作符(Distinct)

  • distinctUntilChanged

過濾掉連續(xù)一樣的事件,注意是連續(xù)撕瞧,例如"A", "A", "B", "B", "A"陵叽,那么過濾后的事件是"A", "B", "A"。

let disposeBag = DisposeBag()
Observable.of("A", "A", "B", "B", "A")
  .distinctUntilChanged()
  .subscribe(onNext: {
    print($0) 
    })
  .disposed(by: disposeBag)

事件是不是“一樣“的判斷丛版,默認(rèn)是根據(jù)Equatable協(xié)議判斷巩掺。也可以直接設(shè)定條件。

.distinctUntilChanged {
  // 判斷條件页畦,返回bool值
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末胖替,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌刊殉,老刑警劉巖殉摔,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異记焊,居然都是意外死亡逸月,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門遍膜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碗硬,“玉大人,你說我怎么就攤上這事瓢颅《魑玻” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵挽懦,是天一觀的道長(zhǎng)翰意。 經(jīng)常有香客問我,道長(zhǎng)信柿,這世上最難降的妖魔是什么冀偶? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮渔嚷,結(jié)果婚禮上进鸠,老公的妹妹穿的比我還像新娘。我一直安慰自己形病,他們只是感情好客年,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著漠吻,像睡著了一般量瓜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上侥猩,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天榔至,我揣著相機(jī)與錄音,去河邊找鬼欺劳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛铅鲤,可吹牛的內(nèi)容都是我干的划提。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼邢享,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼鹏往!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起骇塘,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤伊履,失蹤者是張志新(化名)和其女友劉穎韩容,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唐瀑,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡群凶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哄辣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片请梢。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖力穗,靈堂內(nèi)的尸體忽然破棺而出毅弧,到底是詐尸還是另有隱情,我是刑警寧澤当窗,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布够坐,位于F島的核電站,受9級(jí)特大地震影響崖面,放射性物質(zhì)發(fā)生泄漏咆霜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一嘶朱、第九天 我趴在偏房一處隱蔽的房頂上張望蛾坯。 院中可真熱鬧,春花似錦疏遏、人聲如沸脉课。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽倘零。三九已至,卻和暖如春戳寸,著一層夾襖步出監(jiān)牢的瞬間呈驶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工疫鹊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留袖瞻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓拆吆,卻偏偏與公主長(zhǎng)得像聋迎,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子枣耀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • operator 也是 Rx 的基本元素, 通過它, 可以對(duì) observable 中的事件序列進(jìn)行操作.? 比如...
    貘鳴閱讀 431評(píng)論 0 0
  • 這個(gè)頁面展示的操作符可用于過濾和選擇Observable發(fā)射的數(shù)據(jù)序列霉晕。Debounce — 僅在過了一段指定的時(shí)...
    DoubleThunder閱讀 1,955評(píng)論 0 0
  • 1 優(yōu)化現(xiàn)有應(yīng)用 前面一章引入了 RxSwift 中的函數(shù)式編程的方面, 即 Operator. 下面就來使用之前...
    貘鳴閱讀 337評(píng)論 0 0
  • 監(jiān)聽器(listener) 監(jiān)聽器簡(jiǎn)介 :監(jiān)聽器就是一個(gè)實(shí)現(xiàn)特定接口的普通java程序,這個(gè)程序?qū)iT用于監(jiān)聽另一個(gè)...
    奮斗的老王閱讀 2,511評(píng)論 0 53
  • 店面中優(yōu)秀的員工升職是一件好事,但不能盲目的升職牺堰,要適合員工特長(zhǎng)才可升職拄轻,如員工喜歡陳列讓他來做管理的話,很可能就...
    Ding欣欣閱讀 193評(píng)論 0 0