RxJS windowTime

2020-10-13 18:28 更新

windowTime<T>(windowTimeSpan: number): OperatorFunction<T, Observable<T>>

參量

windowTimeSpan 類型: number。

returns

OperatorFunction<T, Observable<T>>

超載

? windowTime(windowTimeSpan: number, scheduler?: SchedulerLike): OperatorFunction<T, Observable<T>> 定期將源 Observable 值分支為嵌套 Observable 及時。

參量 類型
windowTimeSpan 填充每個窗口的時間
調(diào)度器 可選的。 默認值為 undefined。 要在其上調(diào)度的調(diào)度程序  確定窗口邊界的間隔。

returns OperatorFunction<T, Observable<T>>:可觀察到的窗戶 是可觀察的。 就像 bufferTime,但發(fā)出嵌套 可觀察的而不是數(shù)組。 windowTime marble diagram 返回一個 Observable,它發(fā)出從源收集到的項目的窗口 可觀察的。 輸出 Observable 會定期啟動一個新窗口,如下所示 由 確定 windowCreationInterval參數(shù) 。 它發(fā)出每個窗口 在固定的時間間隔后,由 指定 windowTimeSpan參數(shù) 。 當源 Observable 完成或遇到錯誤時,輸出 Observable 發(fā)出當前窗口并傳播來自源的通知 可觀察的。 如果 windowCreationInterval未提供,則輸出 當上一個持續(xù)時間窗口出現(xiàn)時,Observable 將啟動一個新窗口 windowTimeSpan完成。 如果 maxWindowCount提供,則每個窗口 將發(fā)出最多固定數(shù)量的值。 窗口將立即完成 發(fā)出最后一個值后,下一個仍然會按照 windowTimeSpanwindowCreationInterval爭論。 例子 在每個 1 秒的窗口中,最多發(fā)出 2 次點擊事件

import { fromEvent } from 'rxjs';
import { windowTime, map, mergeAll, take } from 'rxjs/operators';


const clicks = fromEvent(document, 'click');
const result = clicks.pipe(
  windowTime(1000),
  map(win => win.pipe(take(2))), // each window has at most 2 emissions
  mergeAll(),                    // flatten the Observable-of-Observables
);
result.subscribe(x => console.log(x));

每5秒啟動一個窗口,時間為1秒,每個窗口最多發(fā)出2次點擊事件

import { fromEvent } from 'rxjs';
import { windowTime, map, mergeAll, take } from 'rxjs/operators';


const clicks = fromEvent(document, 'click');
const result = clicks.pipe(
  windowTime(1000, 5000),
  map(win => win.pipe(take(2))), // each window has at most 2 emissions
  mergeAll(),                    // flatten the Observable-of-Observables
);
result.subscribe(x => console.log(x));

與上面的示例相同,但具有maxWindowCount而不是take

import { fromEvent } from 'rxjs';
import { windowTime, mergeAll } from 'rxjs/operators';


const clicks = fromEvent(document, 'click');
const result = clicks.pipe(
  windowTime(1000, 5000, 2), // each window has still at most 2 emissions
  mergeAll(),                // flatten the Observable-of-Observables
);
result.subscribe(x => console.log(x));

windowTime(windowTimeSpan: number, windowCreationInterval: number, scheduler?: SchedulerLike): OperatorFunction<T, Observable<T>>

參量 類型
windowTimeSpan 類型: number
windowCreationInterval 類型: number
調(diào)度器 可選的。 默認值為 undefined 類型: SchedulerLike。

returns OperatorFunction<T, Observable<T>> windowTime(windowTimeSpan: number, windowCreationInterval: number, maxWindowSize: number, scheduler?: SchedulerLike): OperatorFunction<T, Observable<T>>

參量 類型
windowTimeSpan 類型: number
windowCreationInterval 類型: number
maxWindowSize 類型: number
調(diào)度器 可選的。 默認值為 undefined. 類型: SchedulerLike。

returns OperatorFunction<T, Observable<T>>

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號