首页 > 解决方案 > Flowable的缓冲结果

问题描述

我有这段代码可以从网络摄像头捕获图像,每秒 1 张图像。

Flowable.interval(0, 1, TimeUnit.MILLISECONDS)
            .map(aLong -> {
                BufferedImage bufferedImage = webcam.getImage();
                return bufferedImage;
            }).subscribe(bufferedImage -> {
        if(bufferedImage != null) {
        }
        // Capture 1000 images
    }, error -> {
        System.out.println(error.getMessage());
    });

使用 RxJava,我怎样才能让它先缓冲 300 个图像,然后将 300 个图像(可能是一个 Java 数组)传递给一个处理方法,比如说processImages(bufferedImageArray);

标签: javarx-javarx-java2

解决方案


只需使用buffer(count)运算符:

Flowable.interval(0, 1, TimeUnit.MILLISECONDS)
            .map(...)
            .buffer(300)
            .subscribe(...)

推荐阅读