gpt4 book ai didi

java - 使用流延迟调用多个服务

转载 作者:行者123 更新时间:2023-12-01 20:02:04 24 4
gpt4 key购买 nike

仅当前一个调用返回 null 时,如何使用流来评估多个服务调用?即。

Stream.of(service1(), service2(), service3())
.filter(Objects::nonNull)
.findFirst()
.ifPresent(this::doSomething);

基本上,如果不需要的话,我不希望调用所有三个服务调用,并且我很感兴趣是否有更好的方法来做到这一点,而无需一堆

if(service1() != null)
...
else if(service2() != null)
...
else if(service3() != null)
...

最佳答案

假设service1()中的每一个, service2()等返回相同的数据类型,那么您可以提供一个 lambda 表达式来调用每个服务并返回该类型 -- a Supplier<Result> ,与 Result是该数据类型。您也可以提供方法引用。

Stream.<Supplier<Result>>of(YourService::service1, YourService::service2, YourService::service3)

Streams 将延迟计算,因此使用方法引用可以让您利用这一点并将执行推迟到需要时。

    .map(supplier -> supplier.get())

执行链的其余部分可以按照您的方式工作。

    .filter(Objects::nonNull)
.findFirst()
.ifPresent(this::doSomething);

关于java - 使用流延迟调用多个服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47933269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com