Rx java rxjava创建两个文件并从字符串输入压缩它们

Rx java rxjava创建两个文件并从字符串输入压缩它们,rx-java,reactive-programming,rx-java2,Rx Java,Reactive Programming,Rx Java2,我需要编写一个函数,获取一个字符串作为输入,然后生成两个文件,并将它们压缩在一起。对于非反应性代码,它希望: void func(String input){ byte[] a = generateFileForA(input); byte[] b = generateFileForB(input); byte[] zip = zipFiles(a,b); doSomethingWithZip(zip); } 如何使用rx java以反应式的方式实现这样的逻辑?

我需要编写一个函数,获取一个字符串作为输入,然后生成两个文件,并将它们压缩在一起。对于非反应性代码,它希望:

void func(String input){
    byte[] a = generateFileForA(input);
    byte[] b = generateFileForB(input);
    byte[] zip = zipFiles(a,b);
    doSomethingWithZip(zip);
}

如何使用rx java以反应式的方式实现这样的逻辑?

我不确定您的具体用例,或者使用rx进行这项特定工作的好处(除了简化线程)

但是,类似于此伪代码的代码可以工作:

public class Zip {

public static void main(String[] args) {

    final Zip zip = new Zip();
    final Disposable d = zip.func("some input")
            .subscribeOn(Schedulers.io())
            .observeOn(Schedulers.single())
            .subscribe(result -> { }, System.out::println);
}

Single<byte[]> func(String input) {
   return Single.zip(
           generate(input, new File("myFileA")), 
           generate(input, new File("myFileB")), 
           this::zipFiles);
}

private Single<byte[]> generate(String input, File output) {
    return Single.fromCallable(() -> {
        // Do Work
        return new byte[0];
    }).subscribeOn(Schedulers.io()); /* Parallel execution */
 }

private byte[] zipFiles(byte[] a, byte[] b) {

    // Do work
    return new byte[0];
}
公共类Zip{
公共静态void main(字符串[]args){
最终压缩=新压缩();
最终一次性d=zip.func(“一些输入”)
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.single())
.subscribe(结果->{},System.out::println);
}
单func(字符串输入){
返回Single.zip(
生成(输入,新文件(“myFileA”),
生成(输入,新文件(“myFileB”),
这是(zipFiles);
}
私有单生成(字符串输入、文件输出){
返回Single.fromCallable(()->{
//工作
返回新字节[0];
}).subscribeOn(Schedulers.io());/*并行执行*/
}
专用字节[]zipFiles(字节[]a,字节[]b){
//工作
返回新字节[0];
}

}

为什么您要将其放入Rx,为什么不将此方法调用放入Rx(如
subscribe()
调用)?