我有两种不同的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

最佳答案

我将看一看使用rxjava进行改造。我喜欢Zip函数,but there's a ton of others。下面是使用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<...>Observable<Result<...>>
然后你会打电话给:
Observable.zip(
    getMyRetrofitService().getCall1(),
    getMyRetrofitService().getCall2(),
    (result1, result2) -> return [result1,result2])
    .subscribe(combinedResults -> //Combined! Do something fancy here.)

09-27 18:14