【发布时间】:2016-03-09 01:21:07
【问题描述】:
这是我想弄清楚的一个 sn-p:
class RaceCondition {
Subject<Integer, Integer> subject = PublishSubject.create();
public void entryPoint(Integer data) {
subject.onNext(data);
}
public void client() {
subject /*some operations*/
.buffer(getClosingSelector())
.subscribe(/*handle results*/);
}
private Observable<Integer> getClosingSelector() {
return subject /* some filtering */;
}
}
有一个Subject 接受来自外部的事件。有一个客户订阅了这个主题,它处理事件以及buffers 它们。这里的主要思想是每次都应该根据使用流中的项目计算的某些条件发出缓冲的项目。
为此,缓冲区边界本身会监听主题。
一个重要的期望行为:每当边界发射项目时,它也应该包含在buffer 的以下发射中。当前配置并非如此,因为项目(至少我认为是这样)是从关闭选择器在到达buffer之前发出的,因此它不包含在当前发射中,但是留在后面等待下一个。
有没有办法让关闭选择器等待项目首先被缓冲?如果没有,是否有另一种方法可以根据下一个传入的项目来缓冲和释放项目?
【问题讨论】: