我是Spring新来的。我在这里遇到了一个小问题“userMono不是空的”,但这部分代码正在执行“switchiffempty(Mono.just(“hello123”)”
Mono<String> someMono = serverRequest.bodyToMono(String.class);
Mono<List<String>> listMsgMono = someMono.flatMap(json -> {
JSONObject jsonObject = Util.getJsonObjectFromString(jsonString);
String id = Util.getStringFromJSON(jsonObject, "id");
JSONArray jsonArray = Util.getJSONArrayFromJSON(jsonObject, "array");
int length = jsonArray.length();
for (int index = 0; index < length; index++) {
String email = Util.getStringFromJSONArray(jsonArray, index);
LOGGER.debug("email :" + email);
Mono<User> userMono = repository.findByEmail(email);
//inner mono is not emmitting data
userMono.flatMap(user -> {
otherRepository.findById(id).flatMap(l -> {
return Mono.just("all welcome");
}).switchIfEmpty(someRepository
.findById(id).flatMap(r ->{
return Mono.just("all done");
}).switchIfEmpty((Mono.just("hello0000"));
return Mono.just("successfull");
})
.switchIfEmpty(Mono.just("hello123"));
}
return Mono.just("hello");
});
问题是在实现中没有链接操作符。每个操作符调用都返回一个新的发布者实例,您需要将其重新分配给一个变量,否则在管道中不会考虑此操作符。
查看项目Reactor文档中的此提示。
我有两项要求: 有了这些,我想做以下工作: 当我调用它时,我得到以下输出: 当然,由于异步单声道映射,流在结果实际出现之前就关闭了。我怎样才能保持这个非阻塞,但也确保结果在调用上完成之前到达?
给定以下monos: 双: 和: 具有相同的输出: 和之间有什么区别,在这种情况下? 从https://projectreactor.io/docs/core/release/reference/index.html#which-operator: [如果你]有一个序列,但[你]对值不感兴趣,并且[你]想在最后切换到另一个单声道,[使用]。 [如果您]希望通过将发布者从1个Mono和任何源端协调到
我面临的情况是,我必须使用2 Mono,其中第二个将依赖于第一个的Id字段,并在第一个Mono的主体中返回第二个的响应。 例如: 然后将结果返回为 我试过了 但像这样,我只能返回第二个单声道的响应。 通过尝试Map或Flatmap,它只在第二个单声道上起作用。 请提出建议。
问题内容: 为了帮助理解monad是什么,有人可以使用Java提供示例吗?有可能吗? 如果您从此处http://jdk8.java.net/lambda/下载预发行版本的兼容Lambda的JDK8,则可以使用Java使用Lambda表达式。 下面显示了使用此JDK的lambda示例,有人可以提供相对简单的monad吗? 问题答案: 仅供参考: 提出的JDK8可选类 确实满足 了Monad的三个定律
我最近一直在学习使用Java中的reactor库和Spring框架进行反应式编程,并且在很大程度上我已经能够掌握它。然而,我发现自己有好几次遇到同样的情况,我想知道我哪里出了问题。 我正在努力解决的问题的要点是,我经常想用mono做一些事情,比如找到一些补充数据,然后将其添加回原始mono中。zip函数在我看来是一个理想的候选函数,但最终我订阅了两次原始mono,这不是我的意图。 这里有一个人为的
我不知道或问这个问题,除了这里,如果不是我道歉的地方。 这里有一个REST请求,它附带了一个简单的bean,其中包含一个列表等属性。对此列表进行迭代,以使用返回Mono(findOne)的响应mongo调用。但我不认为我找到了正确的方法: 在我看来,“反应性”的想法并不是必须做一个块,但我没有找到如何做,否则。 有人能帮我找到做这项任务的最佳方法吗?