Khác với phương thức flatMap() trong đối tượng Stream của Java hay phương thức flatMap() trong đối tượng Optional trong Java giúp chúng ta có thể thao tác với các đối tượng Stream hay Optional của những đối tượng đơn giản hơn, phương thức flatMap() của đối tượng Mono hay đối tượng Flux trong Project Reactor với tham số là một Function được sử dụng để thực thi function với các item mà đối tượng Publisher (Mono/Flux) emit ra, asynchronously và sau đó emit kết quả sau khi thao tác với các item này để tiếp tục thực hiện các thao tác khác trong stream event.
Ví dụ như mình có một đối tượng Flux đơn giản như sau:
1 |
Flux<String> flux = Flux.just("Khanh", "Quan"); |
Sử dụng phương thức flatMap(), chúng ta có thể chuyển đổi data được emit ra từ đối tượng Flux trên từ kiểu dữ liệu là String sang kiểu dữ liệu Integer và emit kết quả này bằng một đối tượng Mono khác. Ví dụ như sau:
1 2 3 4 5 6 |
flux.flatMap(s -> Mono.just(new Integer(s.length()))) .map(value -> { System.out.println(value); return value; }) .subscribe(); |
Kết quả sau khi chuyển đổi từ String sang Integer sẽ được pass vào phương thức map() để in ra console giá trị như các bạn thấy!
Kết quả:
Phương thức flatMap() của đối tượng Mono cũng tương tự nha các bạn!