[RxJava]連結演算子
3467 ワード
連結演算子
zip()
その前に発行を待つ.
Observable<Integer> source = Observable.zip(
Observable.just(100,200,300),
Observable.just(10,20,30),
Observable.just(1,2,3),
(a,b,c) -> a+b+c);
source.subscribe(Log::i);
combineLatest()
最初の表示可能な場所でのみデータがパブリッシュされる場合、または2番目の表示可能なデータストリームのみがパブリッシュされる場合、サブスクライバにデータは送信されません.
ただし、両方の観測値が発行されると、結果値が表示され、最新の結果値のみが表示されます.
これがzip()との違いです.
String[] data = {PUPPLE, ORANGE, SKY, YELLOW};
String[] data2 = {DIAMOND, STAR, PENTAGON};
Observable<String> source = Observable.combineLatest(
Observable.fromArray(data)
.zipWith( //zipWith()로 깔끔하게 코드 정리
Observable.interval(100L, TimeUnit.MILLISECONDS),
(shape, notUsed) -> Shape.getColor(shape)),
Observable.fromArray(data2)
.zipWith(
Observable.interval(150L, 200L, TimeUnit.MILLISECONDS),
(shape, notUsed) -> Shape.getSuffix(shape)),
(v1, v2) -> v1 + v2);
source.subscribe(Log::i);
CommonUtils.sleep(1000);
CommonUtils.exampleComplete();
2つの観測可能なデータの数が異なる.1つ目は観測可能な4色,2つ目は3種類の形状を得た.
第1の観測値間隔は100 ms,第2の観測値間隔は150 ms,間隔は200 msであった.
zip()とは異なり、2つの値が1つずつ発行された後、いずれかの値を変更すると結果が発行されます.
merge()
非常に直感的に漫威図に現れた.
concat()
Reference
Reference
この問題について([RxJava]連結演算子), 我々は、より多くの情報をここで見つけました https://velog.io/@jaeyunn_15/RxJava-결합-연산자テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol