2016-07-14 63 views
0

我有一個類似事件的流,並希望通過在時間上接近來拆分:每個事件跟在前一個事件中,比如說少於5分鐘,必須進入一個鏈中我可以標記這條鏈的開始和結束。所有的實時,沒有緩衝。如何通過暫停來拆分流

像這樣(-表示暫停小於5分鐘,=表示5分鐘的時間跨度):

a - a - a = a - a - a =-- a - a - a 
B   EB   E B 

回答

2

你可以利用windowWhen + timeoutWith運營商來實現:

let sharedSource = source.share(); 

sharedSource.windowWhen(() => 
    sharedSource.timeoutWith(5 * 60 * 60, Observable.empty()).ignoreElements()) 
.subscribe(window => { 
    window.subscribe(/*Handle items in the stream*/); 
}); 

以上構建的的Observableswindows,每個窗口由最多相隔5分鐘的元素組成。

+0

謝謝。只爲那些仍然使用Rx.js的人4.相當於: 'let sharedSource = source.share(); sharedSource.window(()=> sharedSource.timeout(5 * 60 * 60,Rx.Observable.empty())。ignoreElements()) .subscribe(窗口=> { window.subscribe(/ *手柄流中的項目* /); });' –