如何使用Rxjava实现多个异步调用,其中每个调用都以块的形式获得响应。
假设用户发起请求时,我需要从一组异步服务中获取各种数据。 用户请求数据->我需要以异步方式调用服务A,服务B和服务C。
每种服务的定义方式都是:对于给定的请求A->它们将以大块(例如A1,A2,A3和AF)响应数据。类似地,服务B将响应B1,B2,BF,服务C将以块C1,C2,C3,C4,CF进行响应。 其中数字表示块,F表示最终响应。如果响应已发送所有请求的信息的数据,则响应的标记为final。
对于用户的一个给定请求,我调用A,B,C(可以顺序或并行),我想处理这些服务的所有响应,并知道何时从所有服务中获取数据。三。对我来说,我需要知道处理所有服务中的数据的完整状态。
还有如何处置订户
public void processUserRequest(){
Observable.fromIterable(listofservices)
.flatMap (service -> invokeAsyncService(service))
.subscribe( resp -> process response, error -> process
error , () -> done);
} //end processUserRequest
public Observable invokeAsyncService(){
PublishSubject subject = PublishSubject.create();
callService(request, subject); // internally in callService subject's onNext and onComplete are used for emitting responses from the service call.
return subject;
} //end invokeAsyncService