操作符
操作符是Combine中重要的部分搪泳,通過各種操作符,可以將原本各不相關(guān)的邏輯編程一致的扼脐、聲明的數(shù)據(jù)流岸军。
具體應(yīng)用到編程中就是奋刽,利用操作符編程新的發(fā)布者、訂閱者等數(shù)據(jù)艰赞。
轉(zhuǎn)換操作符:
-
map/mapError
map:將接收到的值按照給定的閉包轉(zhuǎn)換為其他值佣谐。
mapError:將錯(cuò)誤轉(zhuǎn)換為另外一種錯(cuò)誤類型。 - flatMap
-
replaceNil
將接收到的nil轉(zhuǎn)換為給定的值 -
scan
將收到的值與當(dāng)前值(第一次使用 initialResult )按照給定的closure轉(zhuǎn)換方妖。 -
setFailureType
強(qiáng)制將上游 Publisher 的錯(cuò)誤類型設(shè)置為指定類型狭魂。這個(gè)方法并不是進(jìn)行錯(cuò)誤類型的轉(zhuǎn)換,因?yàn)樗]有讓我們提供一個(gè) closure党觅,實(shí)際上只是為了讓不同的 Publisher 的錯(cuò)誤類型進(jìn)行統(tǒng)一雌澄,因而這個(gè) Publisher 實(shí)際上是不應(yīng)該發(fā)生錯(cuò)誤的。
過濾操作符:
-
filter
只會(huì)讓滿足條件的值通過仔役。 -
compactMap
和 map 的功能類似掷伙,只是會(huì)自動(dòng)過濾掉空的元素。 -
removeDuplicates
會(huì)跳過在之前已經(jīng)出現(xiàn)過的值又兵。 -
replaceEmpty/replaceError
如果上游 Publisher 是個(gè)空的數(shù)據(jù)流,replaceEmpty 會(huì)發(fā)送指定的值卒废,然后正常結(jié)束沛厨。
如果上游 Publisher 因錯(cuò)誤而終止,replaceError 會(huì)發(fā)送指定的值摔认,然后正常結(jié)束逆皮。
reduce操作符:
- collect
- ignoreOutput
- reduce
運(yùn)算操作符:
- count
- min/max
匹配操作符:
-
contains
會(huì)返回一個(gè)布爾值來表示收到的值是否包含滿足給定的條件的值。需要說明的是参袱,一旦收到的值滿足條件电谣, contains 會(huì)立即發(fā)送 true 并且正常結(jié)束,而如果收到的值不滿足條件抹蚀,會(huì)一直等到收到上游的 Publisher 發(fā)出正常結(jié)束的消息之后才發(fā)送 false 并且正常結(jié)束剿牺。 -
allSatisfy
會(huì)返回一個(gè)布爾值來表示所有收到的值是否滿足給定的條件。需要說明的是环壤,一旦收到的值不滿足條件晒来, allSatisfy 會(huì)立即發(fā)送 false 并且正常結(jié)束,而如果收到的值滿足條件郑现,會(huì)一直等到收到上游的 Publisher 發(fā)出正常結(jié)束的消息之后才發(fā)送 true 并且正常結(jié)束湃崩。
序列操作符:
-
drop/dropFirst
drop:會(huì)一致丟棄收到的值,直到給定的條件得到滿足接箫,然后后面的值會(huì)正常發(fā)送攒读。 - append/prepend
- prefix/first/last/output
組合操作符:
- combineLatest
- merge
- zip
錯(cuò)誤處理操作符:
- assertNoFailure
- catch
- retry
時(shí)間控制操作符:
- measureTimeInterval
-
debounce
當(dāng)有輸入時(shí),debounce就會(huì)開啟一個(gè)指定時(shí)間的時(shí)間窗口辛友,如果在指定時(shí)間內(nèi)收到了新的數(shù)據(jù)薄扁,則再開啟一個(gè)新的指定時(shí)間的時(shí)間窗口,之前的窗口作廢,直到指定時(shí)間內(nèi)沒有新的數(shù)據(jù)泌辫,然后發(fā)送最后收到的數(shù)據(jù)随夸,它的核心思想是可以控制頻繁的數(shù)據(jù)發(fā)送問題 - delay
-
throttle
throttle會(huì)開啟一系列連續(xù)的指定時(shí)間的時(shí)間窗口,每次達(dá)到指定時(shí)間的臨界點(diǎn)就發(fā)送最近的一個(gè)數(shù)據(jù)震放,注意宾毒,當(dāng)收到第一個(gè)數(shù)據(jù)時(shí),會(huì)立刻發(fā)送殿遂。 - timeout
其他操作符
- encode/decode
- switchToLatest
- share
- breakpoint/breakpointOnError
- handleEvents