Rxjs中的操作符

2021-08-28 10:38:33 字數 1884 閱讀 4701

去除重複資料,和所有的資料進行對比。

示例一

rx.observable.of(1,2,3,4,1)

.distinct( )

.subscribe( x => console.log( x ))

輸出為:1,2,3,4

示例二

當然,也可以為distinct傳遞方法,

rx.observable.of(,,

).distinct((p) => p.name)

.subscribe(x => console.log(x))

輸出為:

因為distinct接受的方法用來選擇使用哪個key對應的值進行去重。

與distinct不同的是,該操作是與最新的值進行比較。如果與最新的值相同則忽略。

示例一

rx.observable.of(1,2,3,4,1,1)

.distinctuntilchanged( )

.subscribe( x => console.log( x ))

輸出為:1,2,3,4,1

示例二

distinctuntilchanged也可以接受引數

rx.observable.of(,,

).distinctuntilchanged((p,q) => p.name === q.name)

.subscribe(x => console.log(x))

輸出為:

該示例中傳遞的方法作為比較是否相等。

示例三

示例二中傳遞乙個引數進行compare,還可以傳遞第二個引數選擇那個key進行比較。所以示例二也可以如下所示:

rx.observable.of(,,

).distinctuntilchanged((p,q) => p === q, o=>o.name)

.subscribe(x => console.log(x))

輸出為:

也就是說,第二個引數選擇使用那個key對應的值在第乙個引數中進行比較。

take操作獲取前幾個元素後就直接結束。

rx.observable.interval(1000).take(3).subscribe()
輸出為:

012

complete

在獲取3個元素後,流就完成流,不再繼續發射資料。

可以監聽乙個observable,在其發射資料的時候結束資料流。比如:

var notifier = rx.observable.range(0, 5).delay(5000)

rx.observable.interval(1000).takeuntil(notifier).subscribe()

輸出為:

012

3complete

在該示例中:

先建立了乙個延長5s發射資料的notifier

然後建立每秒發射資料的observable

後建立的observable通過takeuntil來監聽notifier是否發射資料

在notifier未發射資料時,會輸出0,1,2,3。在notifier開始發射資料後,後建立的observable結束流並傳送complete。

rxjs過濾操作符

一 take操作符 只發出源 observable 最初發出的的n個值 n count 如果源發出值的數量小於 count 的話,那麼它的所有值都將發出。然後它便完成,無論源 observable 是否完成。import from angular core import from rxjs obse...

RXJS部分操作符解釋

rxjs部分操作符解釋 長寬 const length document.getelementbyid length const width document.getelementbyid width const area document.getelementbyid area 所有的rx資料流後...

Rxjs常用的管道操作符

mep 類似於 array.prototype.map switchmap switchmap 會停止發出先前發出的內部 observable 並開始發出新的內部 observable 的值。可以停止上一次發出的ajax mergemap 將每個值對映到observable,必須返回乙個observ...