從命令式到響應式(十)

這個系列不知不覺已經寫到10了,單純從使用上來講的話,大部分的知識點也都講過了,原本不打算寫了,恰好今天有同窗在羣裏說但願能總結一下經常使用的操做符,那就用這篇文章給這個系列畫一個句號吧。api

已經提到過的

早在這個系列的第4,第5章的時候就提到過了操做符,有興趣的同窗能夠翻一下,這裏簡單的回顧一下:服務器

  • 建立類:3個,分別是 from,of 和 timer;
  • 過濾類:5個,分別是 filter, first, skip,take 和 takeUntil;
  • 組合類:5個,分別是 combineLatest, withLatestFrom, zip, merge, forkJoin;
  • 轉換類:5個,分別是 map, mergeMap,switchMap, concatMap, groupBy;
  • 聚合類:2個,分別是 reduce,scan;

另外在其它的章節的示例中用到過的還有delay,retryWhen,share,switchMapTo,mapTo,bufferCount,delay,takeWhile,若是看到這些名字你就能清楚的說出它們的做用的話,那麼恭喜你,數據處理中要面臨的多數場景其實你都已經能夠應付了。app

rxjs的操做符大體有120個左右(5.x版本),除了上面那28個,咱們再來看下還有哪些會常常用到。函數

其它一些經常使用的操做符

這章裏就不詳細的解釋每一操做符了,只簡單提一下功能,關於如何學習它們能夠參照第4章的內容。學習

  1. x 到 xMap 再到 xMapTo。xMap,這類操做符大都是在基礎功能上增長 map 功能。加上To之後的操做符xMapTo大都是直接將輸入流映射到一個輸出流,而且它們都不關心輸入流上的值。spa

    • concat 鏈接流,須要注意被鏈接的流須要發出完成通知。
    • concatMapTo 和concatMap相似,只不過鏈接的流始終是相同行爲的流。
    • mergeMapTo 和mergeMap相似,只不過內部流始終是相同行爲的流。
  2. 使代碼更好的保持響應式風格的操做符調試

    • never 一條永遠不會發出任何通知的流。
    • empty 一條只發出,而且馬上發出完成通知的流。
    • defaultIfEmpty 若是輸入流沒發出任何值,只發出完成通知,那麼發出一個默認值。
  3. 與錯誤相關的一些操做符,如已經提到的retryWhenrxjs

    • retry 當輸入流上有錯誤時,能夠發出重試,傳入的參數就是重試的次數。
    • catchError 5.x版本里叫 catch,毫無疑問就是用來捕獲流上的錯誤的。
    • throwError 一條只發出,而且馬上發出錯誤通知的流。
  4. 用來週期性發出值的流,如已經提到的timer圖片

    • interval 只看名字就知道它就是一個計時器,參數就是發出值的週期。
  5. 一些下降數據發出頻率的操做符 或者 防止值重複的操做符ip

    • distinct 用來鑑別值是否應該被認爲是相同的,能夠接受一個可選的函數做爲參數。
    • distinctUntilChanged 這個操做符最大的優點在於,傳入它的函數,能夠接收當前值和前一個值做爲參數。
    • distinctUntilKeyChanged 這個就簡單粗暴多了,經過一個key來判斷值是否發出了改變。
    • debounceTime 控制表單字段的數據發出頻率時常常會用到,好比輸入值改變時自動發出請求去服務器拉取數據的場景。
    • auditTime 在必定時間內忽略輸入流上的值,只發出時間事後的輸入流上最後發出的值。
    • throttleTime 和auditTime差很少,只是發出時間事後輸入流上最早出出的值。
  6. 其它

    • partition filter 只能讓你拿到'true'或'false'的數據流,而這個操做符可讓你同時拿到兩個條,一條徹底發出'true‘值,另外一條徹底發出’false‘值。
    • iff 在訂閱的那一瞬間再決定使用哪條一條流,第一個參數是判斷函數,第二個參數是斷定結果爲true時使用的流,第三個參數固然就是false時使用的流。
    • timeout 通俗的說就是’我只想等xxx時間,這段時間內沒有發出值的話,我認爲over了。’,就是用來設置超時時間而已。
    • tap 5.x的版本里也就作do,意思就是在數據處理的過程當中開個小差作點其它事情,好比調試時你會常常須要它把數據log到控制檯上。
    • find 找到流上符合某個條件的第一個值。
    • every 流上的值是否是都符合某一個條件。

加上以前的28個,一共總結了49個操做符,若是這些不能知足你的業務需求,能夠仔細研究一下官網上公佈的其它操做符,相信總有一款適合你!

圖片描述

相關文章
相關標籤/搜索