我正在尝试实现一个连接运算符,该运算符采用 Streams 列表并输出单个流。问题是输出顺序与输入顺序不同。StreamController.add 是异步的,所以如果我这样做
sc1.add(1)
sc2.add(2)
sc2.add(3)
sc2.add(4)
sc1.add(5)
...
调用各个流 ondata 回调的顺序类似于 1、2、5、3、4,这基本上是 sc1 和 sc2 的交错。这种顺序在执行过程中非常一致,这让我相信该实现是在单个线程上进行循环调度。(这是在飞镖虚拟机上)
如果在我的连接实现中调用 ondata 回调时排序已经被打乱,我无法正确实现这个连接。有没有人对如何实现这一点有好的想法?