[ReactiveX Groovy] map & flatMap & concatMap sample

8907 단어 ReactiveXGroovy



h tp : // Rea c chi ゔ x. 이오/도쿠멘 타치온/오페라와 rs/마 p. html

output: T
圞圖中可以看到
의서유 Observable 圈圈 집행 action후return
numbers = Observable.from([1, 2, 3, 4, 5]);

numbers.map({it * it}).subscribe(
  { println(it); },                          // onNext
  { println("Error: " + it.getMessage()); }, // onError
  { println("Sequence complete"); }          // onCompleted
);
1
4
9
16
25
Sequence complete

flatMap



h tp : // Rea c chi ゔ x. 이오/도쿠멘들 온/오페라와 rs/fぁt마 p. html

output: unordered Observables
圞圖中可以看到
Observables 전부 攤平一齊 수입 집행 action 후 return Observables
可以寞一個Observable圈圈變為多個
例如此圖一個圈圈Observable變為兩個菱形Observables
而かつ綠色菱形 2 수출 교만소 이쪽 색 마름모 1 會先 수출
단 순서 문제 시인위 action 유집행 Scheduler 다집행서소 지도
이하 sample위 일반적 집행서소 이슈 의서 수출 결과
// this closure is an Observable that emits three numbers
numbers   = Observable.from([1, 2, 3]);
// this closure is an Observable that emits two numbers based on what number it is passed
multiples = { n -> Observable.from([ n*2, n*3 ]) };

numbers.flatMap(multiples).subscribe(
  { println(it); },                          // onNext
  { println("Error: " + it.getMessage()); }, // onError
  { println("Sequence complete"); }          // onCompleted
);
2
3
4
6
6
9
Sequence complete

concatMap



h tp : // Rea c chi ゔ x. 이오/도쿠멘들 온/오페라와 rs/fぁt마 p. html

output: ordered Observables
圞圖中可以看到
跟flatMap是相似的
可以從一個Observable圈圈變為多個
예여 此圖如果執行與flatMap同樣的アクション
綠色菱形2 즉사 수출 교만 仍會先 수출 후 藍色菱形 1세 회수출
취산 action 유집행 Scheduler 다집행서야

RxJava Observable tranformation: concatMap() vs flatMap()
List<Integer> numbers;
Executor jobExecutor;

DataManager() {
    this.numbers = new ArrayList<>(Arrays.asList(2, 3, 4, 5, 6, 7, 8, 9, 10));
    this.jobExecutor = JobExecutor.getInstance();
}

Observable<Integer> squareOfAsync(int number) {
    return Observable.just(number * number).subscribeOn(Schedulers.from(this.jobExecutor));
}
dataManager.numbers().flatMap(dataManager::squareOfAsync)dataManager.numbers().concatMap(dataManager::squareOfAsync)비교 결과 여하


.Net



요시오시
可以參考每個 Operator 裡的See Also
Introduction to Rx: xxx

구여
Map -> Select (Introduction to Rx: Select)
FlatMap -> SelectMany (Introduction to Rx: SelectMany)

另外ToList Operator
與.Net ToList 截然不同
Rx시회 1인 Observable물건
h tp : // Rea c chi ゔ x. 이오/도쿠멘들 온/오페라와 rs/와. HTML


단.Net 법시회 傳可列舉內容的多個物件

좋은 웹페이지 즐겨찾기