我有一系列类似的事件,并希望按时间接近分割它:前一个事件之后的每个事件,比方说,不到5分钟,必须进入一个链,我可以在那里标记开始和这条链的终点。全部实时,没有缓冲。
像这样(-
表示暂停不到5分钟,=
表示5分钟时间跨度):
a - a - a = a - a - a =-- a - a - a
B EB E B
答案 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
Observables
或windows
,每个窗口都是由相隔最多5分钟的元素组成。