RxJS bufferToggle

2020-10-14 09:51 更新

緩沖源可觀察值,從 openings并在 輸出時結(jié)束 closingSelector發(fā)出 。

                  bufferToggle<T, O>(openings: SubscribableOrPromise<O>, closingSelector: (value: O) => SubscribableOrPromise<any>): OperatorFunction<T, T[]>    

參量

開口 可訂閱的或無條件的通知以開始新的 緩沖區(qū)。
關閉選擇器 一個需要的功能  發(fā)出的值, openings可觀察對象 并返回可訂閱或承諾,  當它發(fā)出時,發(fā)出信號表明應該發(fā)出關聯(lián)的緩沖區(qū)  并清除。

returns

OperatorFunction<T, T[]>:可觀察到的緩沖值數(shù)組。

描述

收集過去的值作為數(shù)組。 開始 僅在 時收集 opening發(fā)射 ,并調(diào)用 closingSelector 函數(shù)獲得一個 Observable,該變量指示何時關閉緩沖區(qū)。

bufferToggle marble diagram

通過來自的信號打開緩沖區(qū)來緩沖來自源的值 提供給的 Observable openings,并在以下情況關閉并發(fā)送緩沖區(qū) 該 返回的 Subscribable 或 Promise closingSelector函數(shù) 發(fā)出。

每隔一秒鐘,從接下來的 500ms 發(fā)出點擊事件

import { fromEvent, interval, EMPTY } from 'rxjs';
import { bufferToggle } from 'rxjs/operators';


const clicks = fromEvent(document, 'click');
const openings = interval(1000);
const buffered = clicks.pipe(bufferToggle(openings, i =>
  i % 2 ? interval(500) : EMPTY
));
buffered.subscribe(x => console.log(x));

也可以看看

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號