如何通过暂停拆分流

时间:2016-07-14 10:54:31

标签: reactive-programming rxjs

我有一系列类似的事件,并希望按时间接近分割它:前一个事件之后的每个事件,比方说,不到5分钟,必须进入一个链,我可以在那里标记开始和这条链的终点。全部实时,没有缓冲。

像这样(-表示暂停不到5分钟,=表示5分钟时间跨度):

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

1 个答案:

答案 0 :(得分: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*/);
});

以上内容构建了Observable Observableswindows,每个窗口都是由相隔最多5分钟的元素组成。