![](/img/trans.png)
[英]How to Transform Observable<Observable<List<T>>> to Observable<List<T>>
[英]How should I zip a List<Observable<T>> into an Observable<List<T>>?
我有一個List<Observable<T>>
,我想將其轉換為Observable<List<T>>
。
我知道Observable.zip
似乎是正確的功能,但是我不確定如何定義zipper
參數。
這是我嘗試過的:
final List<Observable<T>> tasks = getTasks();
final Observable<List<T>> task = Observable.zip(
tasks,
x -> ImmutableList.copyOf(x)
.stream()
.map(x -> (T)x)
.collect(ImmutableList.toImmutableList()));
但是,這需要未經檢查的演員表。
我應該如何在RxJava 2中解決這個問題?
請注意, 此問題涉及RxJava 1。
使用原語:
List<Observable<T>> tasks = getTasks();
Observable<List<T>> task = Observable.merge(tasks).toList();
但是,您真的需要一次完成所有任務嗎? 您可以跳過toList
並在任務完成時進行處理。 這將為您提供更好的響應能力和更輕松的並發控制。
這樣的事情應該做
final List<Observable<T>> tasks = getTasks();
List<T> values = getTasks().stream()
.map(observable -> observable.firstElement().blockingGet())
.collect(Collectors.toList());
Observable<List<T>> result = Observable.fromArray(values);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.