Эквивалент rxjs concatAll() в rxjava

Моя цель - моделировать события с некоторой случайной (предопределенной) задержкой. Я моделирую события в 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(), я не смог вывести поток событий с указанной задержкой. Что эквивалентно concatAll() в Java?

1 ответ

Не эксперт в RxJAva, но я думаю, что стоит попробовать concatMap (должно быть эквивалентно map(...).concatAll). Если порядок не правильный, я бы попытался упорядочить массив событий, увеличив задержку.

Другие вопросы по тегам