RxJS bufferToggle

2020-10-14 09:51 更新

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

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

參量

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

returns

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

描述

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

bufferToggle marble diagram

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

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

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

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)