RxJava + 改造 - 进行多次调用

2022-09-02 01:47:37

在使用同步和异步调用时,我对改造有扎实的掌握。但是,在创建一些复杂的任务时,我遇到了一个小问题,我必须:

  1. 提出请求以获取ID列表(约20-30个ID)
  2. 获取ID的列表后,我想进行异步调用,以便获取有关ID定义的每个对象的信息。我想在pararrel中提出20-30的请求。我希望观察它,以便在我设法从异步调用接收所有数据后更新UI。

我读到这个问题,我意识到RxJava可以解决我的问题。但坦率地说,到目前为止,我发现很难理解整个过程。

如果我阅读一些正确的示例,以便沉浸在RxJava / RxAndroid问题中,那就太好了。


答案 1

通过此示例,您可以获取 ID 列表,将其划分为单个可观察量,为每个单独的 id 调用服务,并获得每个响应的通知时间。ngetDetails

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));

答案 2

看起来你真正想要的是如何开始使用RxJava的信息或示例,所以我建议你看看Dan Lew的这个优秀的系列文章:http://blog.danlew.net/2014/09/15/grokking-rxjava-part-1/

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


推荐