操作符

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

  • fn是規(guī)約函數(shù)谒臼,acc表示當前的累積值,current表示當前Observable對象吐出的值耀里;
  • 初始值:累積值的初始值蜈缤;

2.條件布爾類操作符:
(1)every(fn):上游的Observable對象吐出的每一個數(shù)據(jù)都會被fn()檢驗,若所有數(shù)據(jù)的判定結(jié)果都是true冯挎,則吐出true底哥,否則一旦不滿足判定條件,就返回false并完結(jié)房官;
(2)find(fn):返回滿足fn判定條件的第一個元素趾徽,若沒有滿足判定條件的元素則返回undefined后完結(jié);
(3)findIndex(fn):返回滿足fn判定條件的第一個元素的序號翰守,若沒有滿足條件的元素則返回-1后完結(jié)孵奶;
(4)isEmpty():檢查上游Observable對象是否是沒有吐出任何數(shù)據(jù)就完結(jié)的Observable對象;

3.過濾類操作符:判定數(shù)據(jù)流對每個數(shù)據(jù)是否有資格進入下游蜡峰;
(1)filter():產(chǎn)生數(shù)據(jù)的時機與上游是一致的了袁,當上游產(chǎn)生數(shù)據(jù)時朗恳,只要滿足判定條件,就會立刻被同步傳給下游载绿;
(2)first():

  • 無參數(shù):找到上游Observable對象吐出的第一個數(shù)據(jù)就完結(jié)粥诫;
  • 有參數(shù):
    • 參數(shù)1:判定函數(shù)fn()
    • 參數(shù)2:函數(shù)(滿足條件的值,序號)對滿足判定條件的數(shù)據(jù)進行操作崭庸;
    • 參數(shù)3:當上游沒有滿足判定條件時傳遞給下游對象的默認值怀浆,若不設(shè)置則會傳一個EmptyError;
const first$ = s$.first(
x => x < 0,  //判定條件是找出負數(shù)冀自;
f => f,  // 對找到的負數(shù)做相應(yīng)的處理揉稚;
-1  //若沒有負數(shù)則返回-1;
)

(3)last():找出Observable對象中滿足判定條件的最后一個數(shù)據(jù)熬粗;因此last要等Observable對象完結(jié)時才吐出數(shù)據(jù)搀玖;

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

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

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

const s$ = Observbale.interval(1000);
const n$ = Observable.timer(2500);
const takeUntil$ = s$.takeUntil(n$); //上游Observable對象每間隔一秒吐出一個遞增的數(shù)據(jù)佣盒,在2.5s之后完結(jié)挎袜,因為n$有了值;

(7)skip(count):忽略上游Observable對象的前count個數(shù)據(jù)肥惭,從第count+1個數(shù)據(jù)開始盯仪,上下游Observable對象保持一致了;若上游吐出的數(shù)據(jù)不夠count個蜜葱,則skip產(chǎn)生的Observable對象就會在上游完結(jié)時立刻完結(jié)全景;

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


每5s重新啟動interval
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末牵囤,一起剝皮案震驚了整個濱河市爸黄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌揭鳞,老刑警劉巖炕贵,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異野崇,居然都是意外死亡鲁驶,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門舞骆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钥弯,“玉大人,你說我怎么就攤上這事督禽〈圉” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵狈惫,是天一觀的道長睛蛛。 經(jīng)常有香客問我,道長胧谈,這世上最難降的妖魔是什么忆肾? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮菱肖,結(jié)果婚禮上客冈,老公的妹妹穿的比我還像新娘。我一直安慰自己稳强,他們只是感情好场仲,可當我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著退疫,像睡著了一般渠缕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上褒繁,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天亦鳞,我揣著相機與錄音,去河邊找鬼棒坏。 笑死燕差,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的俊抵。 我是一名探鬼主播谁不,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼徽诲!你這毒婦竟也來了刹帕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤谎替,失蹤者是張志新(化名)和其女友劉穎偷溺,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钱贯,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡挫掏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了秩命。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尉共。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡褒傅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出袄友,到底是詐尸還是另有隱情殿托,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布剧蚣,位于F島的核電站支竹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鸠按。R本人自食惡果不足惜礼搁,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望目尖。 院中可真熱鬧馒吴,春花似錦、人聲如沸卑雁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽测蹲。三九已至莹捡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扣甲,已是汗流浹背篮赢。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留琉挖,地道東北人启泣。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像示辈,于是被迫代替她去往敵國和親寥茫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,494評論 2 348