我們?cè)谶@里在詳細(xì)介紹一下observable的性質(zhì):
do() 工具類操作符:可以做調(diào)試贫悄,可以做外部條件的設(shè)置炮姨,當(dāng)我們需要對(duì)于流之外的屬性進(jìn)行設(shè)置。
scan()變換類操作符,reduce()數(shù)學(xué)類操作符殊者。
過濾類操作符:
創(chuàng)建類的操作符:
我們首先先來看一下interval()的使用方法:如下所示每一秒輸出一個(gè)一個(gè)數(shù)字 訂閱中有三個(gè)參數(shù),第一個(gè)參數(shù)是next參數(shù)验夯,
第二個(gè)參數(shù)是error參數(shù)猖吴, 第三個(gè)參數(shù)是 complete參數(shù) , 因?yàn)閕nterval 參數(shù)不會(huì)出現(xiàn)錯(cuò)誤挥转,也沒有停止 海蔽,所以就不會(huì)看到
后面參數(shù)的輸出。
接下來我們修改代碼绑谣,我們?nèi)デ叭齻€(gè)輸出值
下面的代碼和上面的能完成一樣的功能:
下面的寫法和上面一樣都能完成功能:
接下來我們來看一下timer()方法党窜,timer方法里面的參數(shù),第一個(gè)參數(shù)是延時(shí)多長(zhǎng)時(shí)間輸出借宵,第二個(gè)參數(shù)是間隔多長(zhǎng)時(shí)間輸出
接下來我們看一下do()方法幌衣,do相當(dāng)于一個(gè)臨時(shí)的subscribe方法,但是可以處理外部的數(shù)據(jù)壤玫。
接下來我們來看filter()方法:過濾方法 例如下面過濾偶數(shù)豁护。
我們可以使用filter()配合其他的first()和last()以及skip()方法
skip過濾掉前兩個(gè)數(shù)值的例子如下所示:
scan()的主要是可以傳入函數(shù)進(jìn)行過濾,示例如下:
reduce()主要是只發(fā)送最終的流欲间,僅僅發(fā)射一次:
同樣可以是用下面的方式楚里,將最終輸出的流組成相應(yīng)的形式±ǜ模可以組成數(shù)組或者是組成相應(yīng)的對(duì)象腻豌。
我們同樣可以看一下出錯(cuò)的時(shí)候是什么情況:
調(diào)用throw()
調(diào)用empty()
總結(jié):
工具類do() ,一般用于調(diào)試,輸出log信息嘱能,為下一步的動(dòng)作做準(zhǔn)備工作,還有就是和外圍進(jìn)行交互虱疏。
變換類scan() ,每個(gè)元素操作之后都會(huì)輸出出來惹骂,同時(shí)會(huì)把累加的結(jié)果傳遞到下一個(gè)值,同時(shí)會(huì)的到一個(gè)流做瞪,個(gè)數(shù)和原來流一樣的流对粪。
數(shù)學(xué)類reduce(), 累加之后僅僅輸出一個(gè)值, 可以在初始化值給一個(gè)array或者一個(gè)對(duì)象装蓬, 最終的數(shù)據(jù)流可已變成 一個(gè)數(shù)組或者一個(gè)對(duì)象著拭,或者對(duì)象數(shù)組的形式。
過濾類操作符 skip first last filter take