Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在改装2中同时调用多个请求_Android_Retrofit2 - Fatal编程技术网

Android 如何在改装2中同时调用多个请求

Android 如何在改装2中同时调用多个请求,android,retrofit2,Android,Retrofit2,我有两种不同的REST方法,我想同时调用它们。在改装2中如何执行此操作 当然,我可以一个接一个地给他们打电话,但在改造方面有什么建议吗 我预计会出现以下情况: Call<...> call1 = myService.getCall1(); Call<...> call2 = myService.getCall2(); MagicRetrofit.call (call1,call2,new Callback(...) {...} ); // and this calls

我有两种不同的REST方法,我想同时调用它们。在改装2中如何执行此操作

当然,我可以一个接一个地给他们打电话,但在改造方面有什么建议吗

我预计会出现以下情况:

Call<...> call1 = myService.getCall1();
Call<...> call2 = myService.getCall2();

MagicRetrofit.call (call1,call2,new Callback(...) {...} );  // and this calls them at the same time, but give me result with one method
调用call1=myService.getCall1(); 调用call2=myService.getCall2(); MagicRetrofit.call(call1、call2、新回调(…){…});//这会同时调用它们,但只给出一个方法的结果
我想看看RxJava的改型。我喜欢这个功能。下面是一个使用Java 8的Zip示例:

odds  = Observable.from([1, 3, 5, 7, 9]);
evens = Observable.from([2, 4, 6]);

Observable.zip(odds, evens, {o, e -> [o, e]}).subscribe(
    { println(it); },                          // onNext
    { println("Error: " + it.getMessage()); }, // onError
    { println("Sequence complete"); }          // onCompleted
);
导致

[1, 2]
[3, 4]
[5, 6]
Sequence complete
改造应该不会太困难

如果需要状态代码,您的改装服务对象应返回
可观察的
可观察的

然后你会打电话:

Observable.zip(
    getMyRetrofitService().getCall1(),
    getMyRetrofitService().getCall2(),
    (result1, result2) -> return [result1,result2])
    .subscribe(combinedResults -> //Combined! Do something fancy here.)

您可以在集合中添加这两个调用,并使用Java8的parallelStream并行进行这两个调用

    Arrays.asList( myService.getCall1(), myService.getCall2()).parallelStream().map(call->call.request());

如果一个请求失败,它会停止整个执行吗@关于HTTP状态代码:对于改型1,是的,它将停止执行并引发异常。对于改装2,它不会。否则-在任何其他“失败”(崩溃等)时-是,它将停止执行并抛出异常。这可以在
onError
中处理,我在上面的示例中没有实现。