【发布时间】:2018-07-22 22:22:50
【问题描述】:
我仍在学习 RxJava 2,并且正在努力构建基于两个 Observable 的 Observable<List<>>。
目标是建立一个Observable<List<Schedule>>。
我有 Observable<List<Channel>> getChannels()(= 频道列表)和 Observable<Schedule> getSchedule(long channelId)(= 频道时间表)的 observables。
这是我当前的 Observable,它没有发出 onNext():
Observable<List<Schedule>> oSchedules = getChannels()
.flatMapIterable(channel -> channel)
.flatMap(c -> getSchedule(c.id()))
.toList()
.toObservable();
Observable<Schedule> getSchedule(long channelId)
{
...
}
Observable<List<Channel>> getChannels()
{
...
}
这工作正常,并发出我的数据:
Observable<Schedule> oSchedule = getChannels()
.flatMapIterable(d -> d)
.flatMap(i -> getSchedule(i.id(), start, end));
编辑
ToList() 仅在 Observable 的 onComplete 上调用,这就是它不起作用的原因。
【问题讨论】:
-
这是一种合理的做法。问题是什么?
-
@Héctor 这是 RxJava 2,其中
toList返回Single。如果 OP 再次希望它为Observable,.toObservable是必要的。 -
似乎 getSchedule 或 getChannels 正在返回 null
-
Mea Culpa,它不起作用。但是,当不调用 toList 时,我的项目已发出...
-
@akarnokd observable 因“null mapper”错误而失败,我不明白为什么,因为没有 toList,它会发出数据,但作为单个项目(每个 observable 都有效,但不返回 null,我在每个可观察到的相同行为中使用硬编码值进行了测试)
标签: rx-java2