Sel*_*nir 4 java android rx-java rx-java2
我正在通过创建Hacker News阅读器应用程序来使用Android学习Java。
我想做的是:
/topstories后Observable<List<int>>,向发送请求,返回,发出。storyId到Observable<Story>List<Story>当所有请求完成时,将Observables合并为一个实体,该实体发出。和代码:
private Observable<Story> getStoryById(int articleId) {
BehaviorSubject<Story> subject = BehaviorSubject.create();
// calls subject.onNext on success
JsonObjectRequest request = createStoryRequest(articleId, subject);
requestQueue.add(request);
return subject;
}
public Observable<ArrayList<Story>> getTopStories(int amount) {
Observable<ArrayList<Integer>> topStoryIds = (storyIdCache == null)
? fetchTopIds()
: Observable.just(storyIdCache);
return topStoryIds
.flatMap(id -> getStoryById(id))
// some magic here
}
Run Code Online (Sandbox Code Playgroud)
然后,我们将这样使用:
getTopStories(20)
.subscribe(stories -> ...)
Run Code Online (Sandbox Code Playgroud)
你可以尝试这样的事情
Observable<List<Integers>> ids = getIdsObservable();
Single<List<Story>> listSingle =
ids.flatMapIterable(ids -> ids)
.flatMap(id -> getStoryById(id)).toList();
Run Code Online (Sandbox Code Playgroud)
然后,您可以订阅该Single以获取 List<Story>