2017-10-09 184 views
1

我很努力地找到任何將兩個Flowable合併成一個的RxJava2實例。RxJava2將兩個Flowables合併爲一個

我想修改​​包括沿

Integer[] ints = new Integer[count]; 
    Integer[] moreints = new Integer[count]; 
    Arrays.fill(ints, 777); 
    Arrays.fill(moreints, 777); 

    Flowable<Integer> source = Flowable.fromArray(ints); 
    Flowable<Integer> anothersource = Flowable.fromArray(moreints); 

    Flowable<Integer> zippedsources = Flowable.zip(source, anothersource, 
      new BiFunction<Flowable<Integer>, Flowable<Integer>, Flowable<Integer>>() { 

       @Override 
       public void apply(Flowable<Integer> arg0, Flowable<Integer> arg1) throws Exception { 
        return arg0.blockingFirst() + arg1.blockingLast(); 
       } 

    }).runOn(Schedulers.computation()).map(this).sequential(); 

編輯線的東西:我試圖從源代碼和anothersource採用整數並將它們加起來但似乎從RxJava1方式根本不同做這些......我嘗試過一堆返回Integer,Publisher,Flowable和void的變體,但是在zip運算符本身中一直在Eclipse中發生錯誤。

我無法找出去的地方在.zip(Iterable<? extends Publisher<? extends T>>, Function<? super Object[], ? extends R>).

+0

你期待什麼樣的結果,做什麼結果,你有現在? – Benjamin

+0

嘗試'BiFunction '並調整'apply'方法的類型。壓縮函數不會獲得源Flowful,而是每個調用的一個值。 – akarnokd

+0

謝謝@akarnokd--這正是我的誤解。 – ChopperOnDick

回答

0

既然你只需要壓縮2個懸浮劑,你可以使用Flowable.zipWith操作。

它的使用方式是如下:

source.zipWith(anotherSource, new BiFunction<Integer, Integer, Integer>() { 
    @Override public Integer apply(Integer a, Integer b) { 
     return a + b; 
    } 
};