我的目标是模拟具有一些随机(预定义)延迟的事件。我正在 RxJ 中模拟事件,如下所示:
var events = [
{id: 1, qty: 23, delayMs: 0},
{id: 1, qty: 231, delayMs: 3},
{id: 1, qty: 232, delayMs: 1},
{id: 1, qty: 233, delayMs: 2},
{id: 1, qty: 234, delayMs: 100},
{id: 1, qty: 235, delayMs: 50},
{id: 1, qty: 236, delayMs: 50},
{id: 1, qty: 237, delayMs: 50},
{id: 1, qty: 238, delayMs: 50},
{id: 1, qty: 239, delayMs: 50},
{id: 1, qty: 2310, delayMs: 50},
{id: 1, qty: 2311, delayMs: 50},
{id: 1, qty: 2312, delayMs: 100},
{id: 1, qty: 2313, delayMs: 50}
];
var rawEvents$ = O.from(events).map(o => O.return(o).delay(o.delayMs)).concatAll();
通过上面的代码,我得到了预期的模拟事件流。我正在尝试在 Java 中实现相同的功能,但看起来 Java 没有 concatAll()。到目前为止我编写的代码:
Observable rawEvents$ = Observable.concat(Observable.from(events).map(o -> Observable.just(o).delay(o.get("delayMs"), TimeUnit.MILLISECONDS)));
但是,由于我使用 concat() 而不是 concatAll(),因此我无法以指定的延迟输出事件流。 java 中的 concatAll() 相当于什么?
最佳答案
不是 RxJAva 方面的专家,但我认为值得尝试 concatMap
(应该相当于 map(...).concatAll
)。如果排序不正确,我会尝试通过增加延迟来对事件数组进行排序。
关于javascript - rxjs concatAll() 等价于 rxjava,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34494007/