簡體   English   中英

我應該如何壓縮列表 <Observable<T> &gt;成為可觀察的 <List<T> &gt;?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM