防抖動(debounce)、去重(distinct)、指定索引值(elementAt)、條件過濾(filter)、html
單個匹配值(first、last...)、審計(audit發出間隔內的最新值)、節流(throttle收到通知時發出最新值)、es6
採樣(sample)、限定取值(take)、跳過值(skip)瀏覽器
public debounce(durationSelector: function(value: T): SubscribableOrPromise): Observable
debounce 延時發送源 Observable 發出的值, 但若是源 Observable 發出了新值 的話, 它會丟棄掉前一個等待中的延遲發送。這個操做符會追蹤源 Observable 的最新值, 並經過調用 durationSelector 函數來生產 duration Observable。函數
只有當 duration Observable 發出值或完成時,纔會發出值,若是源 Observable 上沒有發出其餘值,那麼 duration Observable 就會產生。若是在 duration Observable 發出前出現了新值,那麼前一個值會被丟棄而且不會在輸出 Observable 上發出。this
public debounceTime(dueTime: number, scheduler: Scheduler): Observable
只有在指定的時間週期內沒有發出另外一個源值, 才從源 Observable 中發出一個值spa
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 。對象 |
public distinctUntilChanged(compare: function): Observable
返回 Observable,它發出源 Observable 發出的全部與前一項不相同的項(與前一值比較)
名稱 | 類型 | 屬性 | 描述 |
compare | function |
|
可選比較函數,用來檢驗當前項與源中的前一項是否相同。 |
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 錯誤。
public filter(predicate: function(value: T, index: number): boolean, thisArg: any): Observable
相似於 Array.prototype.filter(), 它只會發出源 Observable 中符合標準函數的值
名稱 | 類型 | 屬性 | 描述 |
predicate | function(value: T, index: number): boolean | 評估源 Observable 所發出的每一個值的函數。若是它返回 |
|
thisArg | any | 可選的 |
可選參數,用來決定 |
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 而且也 找不到匹配的元素,則拋出錯誤。
public single(predicate: Function): Observable<T>
該 Observable 發出源 Observable 所發出的值中匹配指定 predicate 函數的單個項
若是源 Observable 發出多於1個數據匹配項或者沒有發出數據項, 分別以 IllegalArgumentException 和 NoSuchElementException 進行通知。
public last(predicate: function): Observable
返回的 Observable 只發出由源 Observable 發出的最後一個值。它能夠接收一個可選的 predicate 函數做爲 參數,若是傳入 predicate 的話則發送的不是源 Observable 的最後一項,而是發出源 Observable 中 知足 predicate 函數的最後一項。
public ignoreElements(): Observable
忽略源 Observable 所發送的全部項,只傳遞 complete 或 error 的調用
public audit(durationSelector: function(value: T): SubscribableOrPromise): Observable<T>
audit 和 throttle 很像, 可是發出沉默時間窗口的最後一個值, 而不是第一個。
只要 audit 的內部時間器被禁用, 它就會在輸出 Observable 上發出源 Observable 的最新值,而且當時間器啓用時忽略源值。初始時, 時間器是禁用的。只要第一個源值到達, 時間器是用源值調用 durationselector 方法啓用, 返回 "duration" Observable。 當 duration Observable 發出數據或者完成時,時間器禁用,而後輸出 Observable 發出最新的源值,而且不斷的重複這個過程。
public auditTime(duration: number, scheduler: Scheduler): Observable<T>
duration 毫秒內忽略源值,而後發出源 Observable 的最新值, 而且重複此過程
public throttle(durationSelector: function(value: T): SubscribableOrPromise, config: Object): Observable<T>
從源 Observable 中發出一個值,而後在由另外一個 Observable 決定的期間內忽略 隨後發出的源值,而後重複此過程
public throttleTime(duration: number, scheduler: Scheduler): Observable<T>
從源 Observable 中發出一個值,而後在 duration 毫秒內忽略隨後發出的源值, 而後重複此過程
public sample(notifier: Observable<any>): Observable<T>
另外一個 notifier Observable發送時, 發出源 Observable 最新發出的值當
public sampleTime(period: number, scheduler: Scheduler): Observable<T>
在固定週期間隔內只發出源 Observable 發出的最新值
public take(count: number): Observable<T>
take 返回的 Observable 只發出源 Observable 最初發出的的N個值 (N = count)。 若是源發出值的數量小於 count 的話,那麼它的全部值都將發出。而後它便完成,不管源 Observable 是否完成。
public takeLast(count: number): Observable<T>
takeLast 返回的 Observable 只發出源 Observable 最後發出的的N個值 (N = count)。
若是源發出值的數量小於 count 的話,那麼它的全部值都將發出。此操做符必須等待 源 Observable 的 complete 通知發送才能在輸出 Observable 上發出 next 值, 由於不這樣的話它沒法知道源 Observable 上是否還有更多值要發出。
出於這個緣由, 全部值都將同步發出,而後是 complete 通知。
public takeUntil(notifier: Observable): Observable<T>
發出源 Observable 發出的值,直到 notifier Observable 發出值
public takeWhile(predicate: function(value: T, index: number): boolean): Observable<T>
發出在源 Observable 中知足 predicate 函數的每一個值,而且一旦出現不知足 predicate 的值就當即完成
public skip(count: Number): Observable
和take相反
public skipLast(count: number): Observable<T>
和takeLast相反
skipLast 返回一個 Observable,該 Observable 累積足夠長的隊列以存儲最初的N個值 (N = count)。 當接收到更多值時,將從隊列的前面取值並在結果序列上產生。 這種狀況下值會被延時。
public skipUntil(notifier: Observable): Observable<T>
和takeUntil相反
public skipWhile(predicate: Function): Observable<T>
和takeWhile相反