RxJava2将两个Flowable压缩成一个

时间:2017-10-09 15:21:01

标签: java rx-java2 reactivex

我正在努力寻找任何将两个Flowable压缩成一个的RxJava2示例。

我正在尝试修改this test以包含

的内容
  for(String s : mathML.split("\\s+(?=<math)|(?<=</math>)\\s+")){

   if (s.startsWith("<math")) {
    CTOMath ctOMath = getOMML(s);
    System.out.println(s);

    CTP ctp = paragraph.getCTP();
    ctp.addNewOMath();
    ctp.setOMathArray(ctp.sizeOfOMathArray()-1, ctOMath);        
   }
   else {
    run = paragraph.createRun();
    run.setText(s + " ");
    System.out.println(s);
   }
  }

编辑:我正在尝试从源和anothersource获取一个Integer并将它们添加起来,但它似乎与RxJava1的方式有根本的不同......我尝试了一堆返回Integer,Publisher,Flowable和void但是在zip操作符本身上不断获取Eclipse中的错误。

我无法弄清楚 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();

中的位置

1 个答案:

答案 0 :(得分:3)

由于您只需要压缩两个flowable,您可以使用Flowable.zipWith Operator。

使用方式如下:

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