2015-12-28 28 views
0

我的目標是用一些隨機(預定義)延遲來模擬事件。我正在模擬RxJs中的事件如下:rxjs concatAll()在rxjava中相當於

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()。我至今寫的代碼:),而不是concatAll

Observable rawEvents$ = Observable.concat(Observable.from(events).map(o -> Observable.just(o).delay(o.get("delayMs"), TimeUnit.MILLISECONDS))); 

但是,因爲我用CONCAT((),我無法與指定延遲事件的輸出流。 java中concatAll()的等價物是什麼?

回答

1

不是RxJAva的專家,但我認爲值得嘗試concatMap(應該相當於map(...).concatAll)。如果排序不正確,我會嘗試通過增加延遲來排列事件數組。