rxjs中的rxjs concatAll()等价物

时间:2015-12-28 13:00:47

标签: javascript rx-java rxjs

我的目标是模拟具有一些随机(预定义)延迟的事件。我在RxJs中模拟事件如下:

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()相当于什么?

1 个答案:

答案 0 :(得分:1)

不是RxJAva的专家,但我认为值得尝试concatMap(应该相当于map(...).concatAll)。如果排序不正确,我会尝试通过增加延迟来命令事件数组。