哈罗最近开始学习网络流量。
有时,我遇到一些任务,您需要生成一个简单的DTO并返回它,例如,通常的类dto。
@Data
@Builder
public static class Dto {
private long id;
private String code1;
private String code2;
}有两种方法的原始服务。
@Nullable Mono<String> getCode1(long id);
@Nullable String getCode2(long id);并编写了一个在Mono输出处形成的方法。
private Mono<Dto> fill(long id) {
var dto = Dto.builder()
.id(id)
.build();
//doOnNext
var dtoMono1 = service.getCode1(id)
.map(code -> {
dto.setCode1(code);
return dto;
})
.doOnNext(innerDto -> innerDto.setCode2(service.getCode2(id)));
//map
var dtoMono2 = service.getCode1(id)
.map(code -> {
dto.setCode1(code);
return dto;
})
.map(unused -> service.getCode2(id))
.map(code -> {
dto.setCode1(code);
return dto;
});
//just
var dtoMono3 = Mono.just(dto)
.flatMap(innerDto -> service.getCode1(innerDto.getId()));
//just
var dtoMono4 = Mono.fromCallable(() -> dto)
.subscribeOn(Schedulers.boundedElastic())
.flatMap(innerDto -> service.getCode1(innerDto.getId()));
}问题:
。
谢谢你..。
发布于 2022-09-11 21:54:40
在这种情况下使用zip运算符如何?我希望这个例子能帮助你:
private Mono<Dto> fill(long id) {
return Mono.zip(someService.getCode1(id), Mono.just(someService.getCode2(id)))
.map(tuple ->
Dto.builder()
.id(id)
.code1(tuple.getT1())
.code2(tuple.getT2())
.build()
);
}https://stackoverflow.com/questions/73678877
复制相似问题