当前位置: 首页 > 知识库问答 >
问题:

如何将单声道转换为通量

华聪
2023-03-14

使用spring 5,对于reactor,我们有以下需求。

Mono<TheResponseObject> getItemById(String id){
    return webClient.uri('/foo').retrieve().bodyToMono(TheResponseObject)
}

Mono<List<String>> getItemIds(){
    return webClient.uri('/ids').retrieve().bodyToMono(List)
}

Mono<RichResonseObject> getRichResponse(){
    Mono<List> listOfIds = Mono.getItemIds()
    listOfIds.each({ String id ->
        ? << getItemById(id) //<<< how do we convert a list of ids in a Mono to a Flux
    })
    Mono<Object> someOtherMono = getOtherMono()
    return Mono.zip((? as Flux).collectAsList(), someOtherMono).map({
        Tuple2<List, Object> pair ->
        return new RichResonseObject(pair.getT1(), pair.getT2())
    }).cast(RichResonseObject)
}

什么方法可以转换单声道

共有2个答案

杨凯旋
2023-03-14

请找到以下代码:第一次转换Mono

List<String> asList = Arrays.asList("A", "B", "C", "D");
Flux<String> flatMap = Mono.just(asList).flux().flatMap(a-> Flux.fromIterable(a));

或者您可以使用平面地图

Flux<String> flatMapMany = Mono.just(asList).flatMapMany(x-> Flux.fromIterable(x));

慕容俭
2023-03-14

这应该行得通。给定单声道中的字符串列表

  Mono<List<String>> listOfIds;

  Flux<String> idFlux = listOfIds
    .flatMapMany(ids -> Flux.fromArray(ids.toArray(new String [0])));

那就更好了

listOfIds.flatMapMany(Flux::fromIterable)
 类似资料:
  • 我有一个方法,可以尝试使用WebClient返回Mono 它可以返回我期望的结果。然后我尝试创建另一个方法来支持列表作为参数 但这一次返回一个奇怪的结果。 我是反应式编程新手,将流和单声道结合起来,然后转换为流量的正确方法是什么?

  • 我在玩r2dc for spring boot java应用程序。 我在想,如果可能的话,可以把通量转换成Mono来进行某种计算。 伪示例:

  • 我的代码如下。我需要从mongo db获得每次旅行的车费,然后将每次旅行的所有车费相加,得到总车费。我被一种我不知道如何阅读的单声道音乐所困扰。我试着把它转换成通量,但我得到了通量 "'

  • 我们使用的是Spring数据,当我们调用时,我们收到的是

  • 有没有办法将Mono对象转换为javaPojo?我有一个web客户端连接到第三方REST服务,而不是返回<code>Mono</code>,我必须提取该对象并询问它。 我找到的所有示例都返回

  • 我有一个服务电话返回单声道。现在,在给用户提供API响应的同时,我想发送一些响应。我试过用flatMap和地图,但它不起作用。它给了我一个空的身体作为回应。 谢谢你