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