首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >求反应流的排列

求反应流的排列
EN

Stack Overflow用户
提问于 2019-02-07 02:26:25
回答 1查看 122关注 0票数 1

我有两个应该异步工作的反应性流。因此,我应该调用foo()函数,它将接受两个参数,并将与来自两个初始反应流的元素的所有可能排列一起调用。如果有任何异常发生在整个过程中,它应该使所有事情都失败。通过使用反应堆核心来实现这一点的最佳方法是什么?

示例:

代码语言:javascript
运行
复制
    String[] aInitial = {"a","b","c"};
    String[] bInitial = {"0","1"};

    Flux<String> fluxA = Flux.fromArray(aInitial);
    Flux<String> fluxB = Flux.fromArray(bInitial);

    ...

    private void foo(String a, String b){
        System.out.println(a + ", " + b); 
    }

预期结果(顺序不重要):

a,0 a,1 b,0 b,1 c,0 c,1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-07 05:39:36

而不是在执行转换的方法中调用操作(在您的例子中是System.out.println),而是将其分割成一个函数,它将两个元素组合在一起,另一个函数将数据操作组合在一起。

代码语言:javascript
运行
复制
public static void main(String[] args) {

    String[] aInitial = {"a", "b", "c"};
    String[] bInitial = {"0", "1"};

    Flux<String> fluxA = Flux.fromArray(aInitial);
    Flux<String> fluxB = Flux.fromArray(bInitial);

    fluxA
            .flatMap(input1 -> fluxB.map(input2 -> foo(input1, input2)))
            .doOnNext(System.out::println)
            .blockLast();
}

private static String foo(String a, String b) {
    return a + ", " + b;
}

如您所见,我们遍历第一个通量,并使用第二个通量创建一个嵌套循环。

请注意,这将不适用于热通量,只有冷通量将在这里工作,因为我们需要重新订阅第二个通量的每一个元素从第一个发射。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54565433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档