在RxJava中编写具有依赖项的嵌套Observable

时间:2014-12-15 08:02:29

标签: reactive-programming rx-java

我正在编写一个小应用程序来熟悉FRP范例和RxJava。

我有两种方法; getUsers()getNextTask(userId)。这些方法分别返回Observable<User>Observable<Task>,getNextTask依赖于从getUsers Observable发出的用户项。

我编写了以下代码,它使用UserSummary将两个调用的结果合并为一个对象flatMap()

getUsers()
  .flatMap(u -> (Observable<UserSummary>) getNextTask(u.getId()).map(t -> new UserSummary(u, t))
  .subscribe(System.out::println);

此代码工作正常并发出我期望的值,但是,我期望UserSummary类型的值,而是接收类型为Object的值,然后我将其转换为UserSummary

我的问题是,flatMap()是一个调用getNextTask()的好地方,还是可能有一种更有效的方法来调用具有依赖关系的方法?

修改

关于flatMap返回Observable<Object>而不是Observable<UserSummary>,正如我对通用方法所期望的那样,以下快速摘录说明了问题。 flatMap运算符应返回Observable<String>,但返回Observable<Object>。因此,必须将回报转换为各自的类型。

Integer[] numberArray = {1, 2, 3, 4, 5};
Observable.from(numberArray)
  .flatMap(i -> {
    String[] letterArray = {"a", "b", "c", "d", "e"};
    return Observable.from(letterArray)
      .map(x -> x + i);
  }).subscribe(System.out::println);

0 个答案:

没有答案