编程语言
首页 > 编程语言> > RxJava2将两个Flowable压缩成一个

RxJava2将两个Flowable压缩成一个

作者:互联网

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

我试图修改this test以包含一些东西

    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获取一个Integer并将它们添加起来,但它似乎与RxJava1的方式完全不同…我尝试了一系列变体返回Integer,Publisher,Flowable和void但仍然继续在zip运算符本身上的Eclipse和错误.

我无法弄清楚.zip中的内容(Iterable<?extends Publisher<?extends T>&gt ;, Function<?super Object [],?extends R>).

解决方法:

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

它的使用方式如下:

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

标签:java,rx-java2,reactivex
来源: https://codeday.me/bug/20190627/1305993.html