Rxjs--過濾操做符

防抖動(debounce)、去重(distinct)、指定索引值(elementAt)、條件過濾(filter)、html

單個匹配值(first、last...)、審計(audit發出間隔內的最新值)、節流(throttle收到通知時發出最新值)、es6

採樣(sample)、限定取值(take)、跳過值(skip)瀏覽器

debounce

public debounce(durationSelector: function(value: T): SubscribableOrPromise): Observable

debounce 延時發送源 Observable 發出的值, 但若是源 Observable 發出了新值 的話, 它會丟棄掉前一個等待中的延遲發送。這個操做符會追蹤源 Observable 的最新值, 並經過調用 durationSelector 函數來生產 duration Observable。函數

只有當 duration Observable 發出值或完成時,纔會發出值,若是源 Observable 上沒有發出其餘值,那麼 duration Observable 就會產生。若是在 duration Observable 發出前出現了新值,那麼前一個值會被丟棄而且不會在輸出 Observable 上發出。this

debounceTime

public debounceTime(dueTime: number, scheduler: Scheduler): Observable

只有在指定的時間週期內沒有發出另外一個源值, 才從源 Observable 中發出一個值spa

distinct

public distinct(keySelector: function, flushes: Observable): Observable

返回 Observable,它發出由源 Observable 所發出的全部與以前的項都不相同的項prototype

即便是在新瀏覽器中,長時間運行的 distinct 操做也可能會致使內存泄露。爲了在某種場景下來緩解這個問題,能夠提供一個可選的 flushes 參數, 這樣內部的 Set 能夠被「清空」,基本上清除了它的全部值。code

Observable.of(1, 1, 2, 2, 2, 1, 2, 3, 4, 3, 2, 1)
  .distinct()
  .subscribe(x => console.log(x)); // 1, 2, 3, 4
keySelector function
  • 可選的

可選函數,用來選擇某個鍵的值以檢查是不是不一樣的。htm

flushes Observable
  • 可選的

可選 Observable,用來清空操做符內部的 HashSet 。對象

distinctUntilChanged

public distinctUntilChanged(compare: function): Observable

返回 Observable,它發出源 Observable 發出的全部與前一項不相同的項(與前一值比較)

名稱 類型 屬性 描述
compare function
  • 可選的

可選比較函數,用來檢驗當前項與源中的前一項是否相同。

distinctUntilKeyChanged

public distinctUntilKeyChanged(key: string, compare: function): Observable

返回 Observable,它發出源 Observable 發出的全部與前一項不相同的項,使用經過提供的 key 訪問到的屬性來檢查兩個項是否不一樣

若是沒有提供 compare 函數,默認使用相等檢查。

名稱 類型 屬性 描述
key string  

每項中用於查找對象屬性的字符串鍵。

compare function
  • 可選的

可選比較函數,用來檢驗當前項與源中的前一項是否相同。

elementAt

public elementAt(index: number, defaultValue: T): Observable

elementAt 返回的 Observable 會發出源 Observable 指定 index 處的項,若是 index 超出範圍而且提供了 default 參數的話,會發出一個默認值。若是沒有提供 default 參數而且 index 超出範圍,那麼輸出 Observable 會發出一個 ArgumentOutOfRangeError 錯誤。

filter

public filter(predicate: function(value: T, index: number): boolean, thisArg: any): Observable

相似於 Array.prototype.filter(), 它只會發出源 Observable 中符合標準函數的值

名稱 類型 屬性 描述
predicate function(value: T, index: number): boolean  

評估源 Observable 所發出的每一個值的函數。若是它返回 true,就發出值,若是是 false 則不會傳給輸出 Observable 。index 參數是自訂閱開始後發送序列的索引,是從 0 開始的。

thisArg any

可選的

可選參數,用來決定 predicate 函數中的 this 的值。

first

public first(predicate: function(value: T, index: number, source: Observable<T>): boolean, resultSelector: function(value: T, index: number): R, defaultValue: R): Observable<T | R>

若是不使用參數調用,first 會發出源 Observable 中的第一個值,而後完成。若是使用 predicate 函數來調用,first 會發出源 Observable 第一個知足條件的值。它還能夠 接收 resultSelector 函數根據輸入值生成輸出值,假如在源 Observable 完成前沒法發 出一個有效值的話,那麼會發出 defaultValue 。若是沒有提供 defaultValue 而且也 找不到匹配的元素,則拋出錯誤。

single

public single(predicate: Function): Observable<T>

該 Observable 發出源 Observable 所發出的值中匹配指定 predicate 函數的單個項

若是源 Observable 發出多於1個數據匹配項或者沒有發出數據項, 分別以 IllegalArgumentException 和 NoSuchElementException 進行通知。

last

public last(predicate: function): Observable

返回的 Observable 只發出由源 Observable 發出的最後一個值。它能夠接收一個可選的 predicate 函數做爲 參數,若是傳入 predicate 的話則發送的不是源 Observable 的最後一項,而是發出源 Observable 中 知足 predicate 函數的最後一項。

ignoreElements

public ignoreElements(): Observable

忽略源 Observable 所發送的全部項,只傳遞 complete 或 error 的調用

audit

public audit(durationSelector: function(value: T): SubscribableOrPromise): Observable<T>

audit 和 throttle 很像, 可是發出沉默時間窗口的最後一個值, 而不是第一個。

只要 audit 的內部時間器被禁用, 它就會在輸出 Observable 上發出源 Observable 的最新值,而且當時間器啓用時忽略源值。初始時, 時間器是禁用的。只要第一個源值到達, 時間器是用源值調用 durationselector 方法啓用, 返回 "duration" Observable。 當 duration Observable 發出數據或者完成時,時間器禁用,而後輸出 Observable 發出最新的源值,而且不斷的重複這個過程。

auditTime

public auditTime(duration: number, scheduler: Scheduler): Observable<T>

duration 毫秒內忽略源值,而後發出源 Observable 的最新值, 而且重複此過程

throttle

public throttle(durationSelector: function(value: T): SubscribableOrPromise, config: Object): Observable<T>

從源 Observable 中發出一個值,而後在由另外一個 Observable 決定的期間內忽略 隨後發出的源值,而後重複此過程

throttleTime

public throttleTime(duration: number, scheduler: Scheduler): Observable<T>

從源 Observable 中發出一個值,而後在 duration 毫秒內忽略隨後發出的源值, 而後重複此過程

sample

public sample(notifier: Observable<any>): Observable<T>

另外一個 notifier Observable發送時, 發出源 Observable 最新發出的值當

sampleTime

public sampleTime(period: number, scheduler: Scheduler): Observable<T>

在固定週期間隔內只發出源 Observable 發出的最新值

take

public take(count: number): Observable<T>

take 返回的 Observable 只發出源 Observable 最初發出的的N個值 (N = count)。 若是源發出值的數量小於 count 的話,那麼它的全部值都將發出。而後它便完成,不管源 Observable 是否完成。

takeLast

public takeLast(count: number): Observable<T>

takeLast 返回的 Observable 只發出源 Observable 最後發出的的N個值 (N = count)。

若是源發出值的數量小於 count 的話,那麼它的全部值都將發出。此操做符必須等待 源 Observable 的 complete 通知發送才能在輸出 Observable 上發出 next 值, 由於不這樣的話它沒法知道源 Observable 上是否還有更多值要發出。

出於這個緣由, 全部值都將同步發出,而後是 complete 通知

takeUntil

public takeUntil(notifier: Observable): Observable<T>

發出源 Observable 發出的值,直到 notifier Observable 發出值

takeWhile

public takeWhile(predicate: function(value: T, index: number): boolean): Observable<T>

發出在源 Observable 中知足 predicate 函數的每一個值,而且一旦出現不知足 predicate 的值就當即完成

skip

public skip(count: Number): Observable

和take相反

skipLast

public skipLast(count: number): Observable<T>

和takeLast相反

skipLast 返回一個 Observable,該 Observable 累積足夠長的隊列以存儲最初的N個值 (N = count)。 當接收到更多值時,將從隊列的前面取值並在結果序列上產生。 這種狀況下值會被延時。

skipUntil

public skipUntil(notifier: Observable): Observable<T>

和takeUntil相反

skipWhile

public skipWhile(predicate: Function): Observable<T>

和takeWhile相反

相關文章
相關標籤/搜索