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()
调用)?