摘要:加上以后的操作符大都是直接將輸入流映射到一個輸出流,并且它們都不關心輸入流上的值。如果輸入流沒發出任何值,只發出完成通知,那么發出一個默認值。與錯誤相關的一些操作符,如已經提到的當輸入流上有錯誤時,可以發出重試,傳入的參數就是重試的次數。
這個系列不知不覺已經寫到10了,單純從使用上來說的話,大部分的知識點也都講過了,本來不打算寫了,剛好今天有同學在群里說希望能總結一下常用的操作符,那就用這篇文章給這個系列畫一個句號吧。
已經提到過的早在這個系列的第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,如果看到這些名字你就能清楚的說出它們的作用的話,那么恭喜你,數據處理中要面臨的多數場景其實你都已經可以應付了。
rxjs的操作符大致有120個左右(5.x版本),除了上面那28個,我們再來看下還有哪些會經常用到。
其它一些常用的操作符這章里就不詳細的解釋每一操作符了,只簡單提一下功能,關于如何學習它們可以參照第4章的內容。
x 到 xMap 再到 xMapTo。xMap,這類操作符大都是在基礎功能上增加 map 功能。加上To以后的操作符xMapTo大都是直接將輸入流映射到一個輸出流,并且它們都不關心輸入流上的值。
concat 連接流,需要注意被連接的流需要發出完成通知。
concatMapTo 和concatMap類似,只不過連接的流始終是相同行為的流。
mergeMapTo 和mergeMap類似,只不過內部流始終是相同行為的流。
使代碼更好的保持響應式風格的操作符
never 一條永遠不會發出任何通知的流。
empty 一條只發出,并且立刻發出完成通知的流。
defaultIfEmpty 如果輸入流沒發出任何值,只發出完成通知,那么發出一個默認值。
與錯誤相關的一些操作符,如已經提到的retryWhen
retry 當輸入流上有錯誤時,可以發出重試,傳入的參數就是重試的次數。
catchError 5.x版本里叫 catch,毫無疑問就是用來捕獲流上的錯誤的。
throwError 一條只發出,并且立刻發出錯誤通知的流。
用來周期性發出值的流,如已經提到的timer
interval 只看名字就知道它就是一個計時器,參數就是發出值的周期。
一些降低數據發出頻率的操作符 或者 防止值重復的操作符
distinct 用來鑒別值是否應該被認為是相同的,可以接受一個可選的函數作為參數。
distinctUntilChanged 這個操作符最大的優勢在于,傳入它的函數,可以接收當前值和前一個值作為參數。
distinctUntilKeyChanged 這個就簡單粗暴多了,通過一個key來判斷值是否發出了改變。
debounceTime 控制表單字段的數據發出頻率時經常會用到,比如輸入值改變時自動發出請求去服務器拉取數據的場景。
auditTime 在一定時間內忽略輸入流上的值,只發出時間過后的輸入流上最后發出的值。
throttleTime 和auditTime差不多,只是發出時間過后輸入流上最先出出的值。
其它
partition filter 只能讓你拿到"true"或"false"的數據流,而這個操作符可以讓你同時拿到兩個條,一條完全發出"true‘值,另一條完全發出’false‘值。
iff 在訂閱的那一瞬間再決定使用哪條一條流,第一個參數是判斷函數,第二個參數是判定結果為true時使用的流,第三個參數當然就是false時使用的流。
timeout 通俗的說就是’我只想等xxx時間,這段時間內沒有發出值的話,我認為over了。’,就是用來設置超時時間而已。
tap 5.x的版本里也就做do,意思就是在數據處理的過程中開個小差做點其它事情,比如調試時你會經常需要它把數據log到控制臺上。
find 找到流上符合某個條件的第一個值。
every 流上的值是不是都符合某一個條件。
加上之前的28個,一共總結了49個操作符,如果這些不能滿足你的業務需求,可以仔細研究一下官網上公布的其它操作符,相信總有一款適合你!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/97284.html
摘要:是前端開發領域新興的方法論體系,它繼承了與編程理念,在技術上有不少創新。但專利與開源協議是平行的兩個世界,改底層也不大容易解決問題。此外,要求在中結合各屬性的是否變化,判斷是否該觸發更新。 ReRest (Reactive Resource State Transfer) 是前端開發領域新興的方法論體系,它繼承了 MVVM 與 FRP 編程理念,在技術上有不少創新。本文從專利稿修改而來...
摘要:最重要的就是找一個適合自己的主題了。事實上,免費主題也非常多,而且很多的免費主題在功能上和界面美觀上已經大大超過了付費的主題。加上這些主題都是開源的,基本上可以在上找得到源碼,安全性是沒有問題,主題的作者也在不斷更新當中。WordPress最重要的就是找一個適合自己的主題了。好一點的WordPress主題基本上都是要收費的,而且價格還不便宜,這導致了不少的新手朋友們很為難。而有時我們僅僅根據...
摘要:所以一個網,甚至是響應式設計,在兩個平臺上都會損害您整體的。三響應式與如果把網站作為一個單獨的網站,如果網站的內容與桌面版的內容相對缺少,導致用戶回到桌面端的網站,會記錄這種選擇,使搜索排名降低,國內百度就不知道會怎樣。 一、為什么需要響應式設計(responsible web design) 1. 響應式發展背景 1、屏幕尺寸的快速變化,iphone為320x480,分辨率在未來可以...
摘要:易于持續集成,可通過腳本命令執行,實際壓測建議使用命令行模式。 目錄 命令參數 執行示例 生成測試報告 利用已有.jtl文件生成報告 無.jtl文件生成測試報告 報告內容解析 Dashboard Charts 所遇問題 JMeter可以運行模式有兩種,一種是GUI圖形,另一種是命令模式運行也...
閱讀 2260·2021-11-16 11:44
閱讀 647·2019-08-30 15:55
閱讀 3279·2019-08-30 15:52
閱讀 3617·2019-08-30 15:43
閱讀 2203·2019-08-30 11:21
閱讀 443·2019-08-29 12:18
閱讀 1952·2019-08-26 18:15
閱讀 476·2019-08-26 10:32