Spring webflux webflux Mono<;T>;未调用onErrorReturn
这是我的手机功能Spring webflux webflux Mono<;T>;未调用onErrorReturn,spring-webflux,Spring Webflux,这是我的手机功能 public Mono<ServerResponse> getTime(ServerRequest serverRequest) { return time(serverRequest).onErrorReturn("some errors has happened !").flatMap(s -> { // this didn't called return ServerResponse.ok().conte
public Mono<ServerResponse> getTime(ServerRequest serverRequest) {
return time(serverRequest).onErrorReturn("some errors has happened !").flatMap(s -> {
// this didn't called
return ServerResponse.ok().contentType(MediaType.TEXT_PLAIN).syncBody(s);
});
}
公共Mono getTime(服务器请求服务器请求){
返回时间(serverRequest).OneErrorReturn(“发生了一些错误!”).flatMap(s->{
//这个电话没打过来
返回ServerResponse.ok().contentType(MediaType.TEXT\u PLAIN).syncBody;
});
}
时间(ServerRequest ServerRequest)方法为
private Mono<String> time(ServerRequest request) {
String format = DateTimeFormatter.ofPattern("HH:mm:ss").format(LocalDateTime.now());
return Mono.just("time is:" + format + "," + request.queryParam("name").get());
}
专用单声道时间(服务器请求){
String format=DateTimeFormatter.of模式(“HH:mm:ss”).format(LocalDateTime.now());
返回Mono.just(“时间是:“+format+”,“+request.queryParam(“name”).get());
}
当我不使用param“name”时,它将抛出一个NosTouchElementException;
但是,单声道扬声器不工作!
为什么或者我错了什么?操作员负责处理管道中发生的错误信号 在您的例子中,
NoSuchElementException
在任何东西都可以订阅返回的Mono
之前被抛出反应管道之外
我认为,通过如下方式推迟执行,您可能会得到您想要的行为:
private Mono<String> time(ServerRequest request) {
return Mono.defer(() -> {
String format = DateTimeFormatter.ofPattern("HH:mm:ss").format(LocalDateTime.now());
Mono.just("time is:" + format + "," + request.queryParam("name").get());
});
}
专用单声道时间(服务器请求){
返回Mono.defer(()->{
String format=DateTimeFormatter.of模式(“HH:mm:ss”).format(LocalDateTime.now());
Mono.just(“时间是:“+format+”,“+request.queryParam(“name”).get());
});
}
非常感谢!它确实有用!我是webflux的新用户!再次感谢你