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