如何调用rest apis异步并等待直到所有调用都在rx-android中完成

时间:2018-03-25 12:04:48

标签: android kotlin retrofit2 rx-android

在一项活动中,我需要调用4个休息API。一个API不依赖于另一个API。但是对于计算,我需要所有4个API的数据。所以,我打算调用API异步,但要等到所有API都完成加载。我正在使用RxAndroid进行改造。我不知道如何使用rx实现这一目标。我不想为每个API调用使用布尔来跟踪它是否加载。有没有rx方式?

现在,我同步下面的所有电话

示例代码:

clear all
close all
clc

syms w
wn=4000 %rad/s

k=1
for n=0:0.05:0.8

  w=0:10:1884;
  H=1./sqrt((1-(w/wn).^2)+(2*n*w/wn).^2);
  x=w/wn

  plot(x,H)
  title('Time versus Response Graph of n');
  xlabel('Time(s)');
  ylabel('Response(m)');
  k=k+1
  hold on
end

NB:在此过程中,如果某个API失败,它会停止执行下一个API,但我希望它应该调用下一个API。

1 个答案:

答案 0 :(得分:2)

如果所有API调用都是独立的,您可以使用zip运算符:

Single.zip(single1, single2, ..., (result1, result2, ... -> (combine the results)})

如果有依赖结果,您可以使用flatMap

single1.flatMap(result -> (generate a new Single based on that result)})