RxJava+;改装-拨打多个电话

RxJava+;改装-拨打多个电话,java,android,retrofit,Java,Android,Retrofit,在使用同步和异步调用时,我对改型有很好的理解。但是,我在创建一些复杂任务时遇到了一个小问题,我必须: 提出请求以获取ID列表(大约20-30个ID) 在获取ID的列表后,我想进行异步调用,以获取由ID定义的每个对象的信息。我想在pararrel中发出20-30请求。我希望观察它,以便在我设法从异步调用接收所有数据之后更新UI 我读到这个问题,我意识到RxJava可以解决我的问题。但坦率地说,到目前为止,我发现很难理解整个过程 如果我阅读一些正确的示例,以便深入了解RxJava/RxAndroid

在使用同步和异步调用时,我对改型有很好的理解。但是,我在创建一些复杂任务时遇到了一个小问题,我必须:

  • 提出请求以获取ID列表(大约20-30个ID)
  • 在获取ID的列表后,我想进行异步调用,以获取由ID定义的每个对象的信息。我想在pararrel中发出20-30请求。我希望观察它,以便在我设法从异步调用接收所有数据之后更新UI
  • 我读到这个问题,我意识到RxJava可以解决我的问题。但坦率地说,到目前为止,我发现很难理解整个过程


    如果我阅读一些正确的示例,以便深入了解RxJava/RxAndroid问题,那就太好了。

    看起来你真正想要的是关于如何开始使用RxJava的信息或示例,所以我建议你看看Dan Lew的这一系列优秀文章:


    本系列应该包含足够的材料,让您能够很好地了解如何实现您的功能。

    通过本示例,您可以获得id列表,将其划分为各个可观察项,为每个id调用服务,并为每个
    getDetails
    响应获得通知

    service.getIds()
            .flatMap(ids -> Observable.from(ids))
            .map(id -> service.getDetails(id))
            .subscribe(detailed -> updateUi(detailed));
    
    您可以使用
    Observable.zip
    函数等待几个并行调用,但我不知道您是否可以在可变大小的调用中使用它

    看看这个:

    对Observable的改进支持也使得将多个REST调用组合在一起变得容易。例如,假设我们有一个调用获取照片,第二个调用获取元数据。我们可以将结果压缩在一起:


    这是一个非常有用的教程系列的极好的指针。但这是一个蹩脚的答案。
    Observable.zip(
        service.getUserPhoto(id),
        service.getPhotoMetadata(id),
        (photo, metadata) -> createPhotoWithData(photo, metadata))
        .subscribe(photoWithData -> showPhoto(photoWithData));