複数のイベントストリームをmerge()演算子で結合し、「アクティブストリーム」の数を制限する方法を探しています。たとえば、6つのストリームをマージすると(すべてが異なるスレッドで動作している)、merge()はそれらすべてをサブスクライブしますが、最初は3つをサブスクライブする必要があり、そのうちの1つが完了すると別のストリームをサブスクライブする必要があります6つのストリームがすべて完了するまで。マージまたは他のRxJavaオペレーターでこれを達成することは可能ですか、それとも自分で書く必要がありますか?
マージ演算子で値maxConcurrencyを使用できますが、すべてのObservableを1つにラップする必要があります。
@Test
public void testMergeMaxConcurrency() {
Observable.merge(Observable.just(
Observable.just(3),
Observable.just(5),
Observable.just(1),
Observable.just(4),
Observable.just(2)), 2)
.collect(ArrayList<Integer>::new, ArrayList::add)
.doOnNext(Collections::sort)
.subscribe(System.out::println);
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加