Rx java RxJava中的join操作符是否允许按计数指定窗口?

Rx java RxJava中的join操作符是否允许按计数指定窗口?,rx-java,Rx Java,我正在读这篇文章,试图理解join操作符。签字如下: public final <TRight,TLeftDuration,TRightDuration,R> Observable<R> join( Observable<TRight> right, Func1<T,Observable<TLeftDuration>> leftDurationSelector, Func1<TRight,Observabl

我正在读这篇文章,试图理解
join
操作符。签字如下:

public final <TRight,TLeftDuration,TRightDuration,R> Observable<R> join(
    Observable<TRight> right,
    Func1<T,Observable<TLeftDuration>> leftDurationSelector,
    Func1<TRight,Observable<TRightDuration>> rightDurationSelector,
    Func2<T,TRight,R> resultSelector)
我想在两边都有2个元素的窗户上连接它们,窗户会这样移动:

[0]-
[0]-

[0-1]-
[0]---

 0[1-2]-
[0---2]-

 0-1[2-3]-
[0---2]---

 0-1[2-3]-
[0---2]---

 0-1-2[3-4]-
 0--[2---4]-

 0-1-2[3-4]-
 0--[2---4]-

 0-1-2-3[4-5]-
 0--[2---4]-

 0-1-2-3-4[5-6]-
 0---2--[4---6]-

 ...

EDIT2:我上面的例子确实暗示了排放的时间,正如@akarnokd在中所建议的那样。然而,我仍然不知道如何归档这样的场景。如果有人能给出另一个不使用
定时器
间隔
连接
的例子,那就太好了。

操作符将两个来源的值组合在一起:每当左键触发时,左键值将与所有当前打开的右键值组合在一起。相反的点火模式也是如此

是否可以使用计数而不是持续时间来连接两个序列?操作员窗口可以使用计数或时间来定义

我不确定计数意味着什么,但您可以发布其中一个来源并对其进行了解:

left.publish(o -> o.join(right, lv -> o.take(5), rv -> ..., (a, b) -> a + b);
leftDurationSelector和rightDurationSelector返回哪种类型的观察值?这些名字表明它们应该与时间有关,但这些签名似乎允许任何形式的观察


通过持续时间选择器,无论类型是什么或发出的值是什么,因为第一个onNext或onCompleted将表示特定窗口的结束。因此,从某种意义上说,事件发射的时间很重要,但它不需要是一个间隔()。

你的最后一句话确实向我澄清了一些事情,但我仍然不清楚。我已经编辑了我的问题,你能详细说明一下吗?非常感谢。
[0]-
[0]-

[0-1]-
[0]---

 0[1-2]-
[0---2]-

 0-1[2-3]-
[0---2]---

 0-1[2-3]-
[0---2]---

 0-1-2[3-4]-
 0--[2---4]-

 0-1-2[3-4]-
 0--[2---4]-

 0-1-2-3[4-5]-
 0--[2---4]-

 0-1-2-3-4[5-6]-
 0---2--[4---6]-

 ...
left.publish(o -> o.join(right, lv -> o.take(5), rv -> ..., (a, b) -> a + b);