操作符

學(xué)習(xí)指南:操作符
1.數(shù)學(xué)類(lèi):必須等上游完結(jié)才給下游傳遞唯一數(shù)據(jù);
(1)count():統(tǒng)計(jì)上游Observable對(duì)象吐出的所有數(shù)據(jù)個(gè)數(shù);
(2)max()/min():可接受比較函數(shù)做參數(shù);
(3)reduce(fn(acc,current),初始值)

  • fn是規(guī)約函數(shù),acc表示當(dāng)前的累積值,current表示當(dāng)前Observable對(duì)象吐出的值;
  • 初始值:累積值的初始值;

2.條件布爾類(lèi)操作符:
(1)every(fn):上游的Observable對(duì)象吐出的每一個(gè)數(shù)據(jù)都會(huì)被fn()檢驗(yàn),若所有數(shù)據(jù)的判定結(jié)果都是true,則吐出true,否則一旦不滿(mǎn)足判定條件,就返回false并完結(jié);
(2)find(fn):返回滿(mǎn)足fn判定條件的第一個(gè)元素,若沒(méi)有滿(mǎn)足判定條件的元素則返回undefined后完結(jié);
(3)findIndex(fn):返回滿(mǎn)足fn判定條件的第一個(gè)元素的序號(hào),若沒(méi)有滿(mǎn)足條件的元素則返回-1后完結(jié);
(4)isEmpty():檢查上游Observable對(duì)象是否是沒(méi)有吐出任何數(shù)據(jù)就完結(jié)的Observable對(duì)象;

3.過(guò)濾類(lèi)操作符:判定數(shù)據(jù)流對(duì)每個(gè)數(shù)據(jù)是否有資格進(jìn)入下游;
(1)filter():產(chǎn)生數(shù)據(jù)的時(shí)機(jī)與上游是一致的,當(dāng)上游產(chǎn)生數(shù)據(jù)時(shí),只要滿(mǎn)足判定條件,就會(huì)立刻被同步傳給下游;
(2)first():

  • 無(wú)參數(shù):找到上游Observable對(duì)象吐出的第一個(gè)數(shù)據(jù)就完結(jié);
  • 有參數(shù):
    • 參數(shù)1:判定函數(shù)fn()
    • 參數(shù)2:函數(shù)(滿(mǎn)足條件的值,序號(hào))對(duì)滿(mǎn)足判定條件的數(shù)據(jù)進(jìn)行操作;
    • 參數(shù)3:當(dāng)上游沒(méi)有滿(mǎn)足判定條件時(shí)傳遞給下游對(duì)象的默認(rèn)值,若不設(shè)置則會(huì)傳一個(gè)EmptyError;
const first$ = s$.first(
x => x < 0,  //判定條件是找出負(fù)數(shù);
f => f,  // 對(duì)找到的負(fù)數(shù)做相應(yīng)的處理;
-1  //若沒(méi)有負(fù)數(shù)則返回-1;
)

(3)last():找出Observable對(duì)象中滿(mǎn)足判定條件的最后一個(gè)數(shù)據(jù);因此last要等Observable對(duì)象完結(jié)時(shí)才吐出數(shù)據(jù);

(4)take(count):限定從上游Observable對(duì)象取出的數(shù)據(jù)量;

(5)takeCountWhile(count, fn):對(duì)上游Observable的每個(gè)數(shù)據(jù)用fn判定,立刻傳給take,只要取到了count個(gè)數(shù)據(jù)即完結(jié);

(6)**takeUntil(notifier)**:上游數(shù)據(jù)直接傳給下游數(shù)據(jù),直到參數(shù)notifier吐出一個(gè)數(shù)據(jù)或完結(jié),上游通往下游的通道被關(guān)閉;

const s$ = Observbale.interval(1000);
const n$ = Observable.timer(2500);
const takeUntil$ = s$.takeUntil(n$); //上游Observable對(duì)象每間隔一秒吐出一個(gè)遞增的數(shù)據(jù),在2.5s之后完結(jié),因?yàn)閚$有了值;

(7)skip(count):忽略上游Observable對(duì)象的前count個(gè)數(shù)據(jù),從第count+1個(gè)數(shù)據(jù)開(kāi)始,上下游Observable對(duì)象保持一致了;若上游吐出的數(shù)據(jù)不夠count個(gè),則skip產(chǎn)生的Observable對(duì)象就會(huì)在上游完結(jié)時(shí)立刻完結(jié);

3.轉(zhuǎn)化數(shù)據(jù)流
(1)map()
(2)switchMap():同一時(shí)間內(nèi)只維護(hù)一個(gè)內(nèi)部Observable對(duì)象;


每5s重新啟動(dòng)interval
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容