javascript - rxjs concatAll() 等价于 rxjava

标签 javascript rx-java rxjs

我的目标是模拟具有一些随机(预定义)延迟的事件。我正在 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/

相关文章:

java - 在 RxJava 2/RxAndroid 2 中使用 'map' 的问题

javascript - 当我将鼠标悬停在 Spotfire 可视化标题上时,有没有办法显示悬停/工具提示信息?

javascript - 使用 RaphaelJS 同步两个动画的计时

javascript - 在 ionic3 中使用带有延迟加载的全局导航提供程序是一种不好的做法吗?

java - Rx-Java 在出现错误时替换 Observable

android - 我如何使用 RXJava/Android 更改对象列表中的字段

angular - 如何将可观察值传递给 Angular Bootstrap 组件?

javascript - 来自数组 typescript 的可观察值

rxjs - 每个可观察值仅调用一次 RxJS 平面 map 函数

Javascript:操作列表的列表