Free Lines Arrow
본문 바로가기
Reactive Programing

[Reactive Programming] zipWith

by skahn1215 2024. 11. 9.
728x90
반응형

1. ZipWith

public final <T2> Flux<Tuple2<T,T2>> zipWith(Publisher<? extends T2> source2)
  • 두개의 소스를 결합하는 함수이다.
  • 다이어 그램을 보면 두개의 스트림을 하나로 합쳐주는 역할을 한다.
  • 하지만 E는 결과 스트림에는 없는게 보인다.
  • 둘중 하나가 null 이면 결과 스트림으로 방출되지 않는다.

 

        Flux<Long> userIds = Flux.just(1L,2L,3L);
        Mono<List<Member>> listMono = userIds.flatMap(
                        i -> {
                            Mono<Member> memberMono = Mono.fromCallable(() -> memberRepository.findUser(i))
                                    .subscribeOn(Schedulers.fromExecutor(customExecutor));
                            Mono<Integer> integerMono = Mono.fromCallable(() -> memberRepository.findRewardByGrade(i))
                                    .subscribeOn(Schedulers.fromExecutor(customExecutor));
                            return memberMono.zipWith(integerMono, (member, reward) -> {
                                member.setReward(reward);
                                return member;
                            });
                        }
                )
                .collectList();
728x90
반응형

'Reactive Programing' 카테고리의 다른 글

[Reactive Programming] 속도비교  (1) 2024.11.02
[Reactive Programming] Flux, Mono 개념  (0) 2024.10.14
[Reactive Programming] 개념  (0) 2024.10.06

댓글