티스토리 뷰
Tech.io의 'Reactive Programming with Reactor 3'을 공부하면서 정리하는 글입니다.
Transform
- Reactor 에는 데이터 변형시킬 수 있는 많은 연산자(Operators) 가 준비되어 있음
연습
// TODO Capitalize the user username, firstname and lastname
Mono<User> capitalizeOne(Mono<User> mono) {
return mono.map(u -> new User(u.getUsername().toUpperCase(), u.getFirstname().toUpperCase(), u.getLastname().toUpperCase()));
}
// TODO Capitalize the users username, firstName and lastName
Flux<User> capitalizeMany(Flux<User> flux) {
return flux.map(u -> new User(u.getUsername().toUpperCase(), u.getFirstname().toUpperCase(), u.getLastname().toUpperCase()));
}
// TODO Capitalize the users username, firstName and lastName using #asyncCapitalizeUser
Flux<User> asyncCapitalizeMany(Flux<User> flux) {
return flux.flatMap(this::asyncCapitalizeUser);
}
Mono<User> asyncCapitalizeUser(User u) {
return Mono.just(new User(u.getUsername().toUpperCase(), u.getFirstname().toUpperCase(), u.getLastname().toUpperCase()));
}
Flux
또는Mono
를 이용하고,flatMap
연산을 이용하면 비동기 처리가 가능하다T
를U
로 변환 하려고 할때,flatMap
은 함수를 통해T
를Publisher<U>
로 처리하여 비동기가 가능하게 됨(map
의 경우,T
를 인자로 받아U
를 리턴하는 함수를 이용함)
flatMap
은 내부적으로Publisher<U>
을 모두 구독하고, 하나의 단일 결과로 머지 합니다.Publisher<U>
의 응답값에 따라서 결과Flux
의 순서가 변경될 수 있습니다.
관련글
2021.03.02 - [learning] - Reactive Programming 소개 (1/12)
2021.03.09 - [learning] - StepVerifier 사용 방법 (4/12)
보다 자세한 FlatMap 동작 방식은 jngcii 님의 'flatMap 알아보기' 글을 살펴보아요
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 자바
- Widget
- Commonjs
- Git
- tipoftheday
- REACTOR
- VIM
- VI
- 리액티브프로그래밍
- 자바스크립트
- 스프링인액션
- reactiveprogramming
- intellij
- Java
- dojo
- 빔
- 리액터
- maven
- Node.js
- 커피스크립트
- unit test
- Coffeescript
- React
- Windows
- JavaScript
- gvim
- Eclipse
- 윈도우즈
- console
- Configuration
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
글 보관함