首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java CompletableFuture.thenCombine返回CompletableFuture of CompletableFuture

java CompletableFuture.thenCombine返回CompletableFuture of CompletableFuture
EN

Stack Overflow用户
提问于 2018-01-09 08:30:21
回答 2查看 4.7K关注 0票数 7

在我的应用中有三种不同的方法。所有的人都会返回CompletableFuture<SomeType>。我想并行执行方法1和方法2。在完成方法1和方法2之后,我想用方法1和方法2返回值的参数触发方法3。

代码示例:

代码语言:javascript
复制
CompletableFuture<Request> future1 = RequestConverter.Convert(requestDto);
CompletableFuture<String> future2 = tokenProvider.getAuthToken();

CompletableFuture<CompletableFuture<String>> future3 = 
future1.thenCombine(future2,(request,token) -> 
requestProcessor.Process(request,token)); 

但是上面的代码的问题是我得到了一个CompletableFuture of CompletableFuture。我想避免这种情况,得到一个简单的CompletableFuture<String>而不阻塞。这个是可能的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-09 13:29:39

假设您有Pair类。

代码语言:javascript
复制
class Pair<L, R> {
    public final L left;
    public final R right;

    public Pair(L left, R right) {
        this.left = left;
        this.right = right;
    }
}

然后你可以先组合成一对,然后再作曲。

代码语言:javascript
复制
CompletableFuture<Request> future1 = RequestConverter.Convert(requestDto);
CompletableFuture<String> future2 = tokenProvider.getAuthToken();

CompletableFuture<String> future3 = future1
    .thenCombine(future2, Pair::new)
    .thenCompose(pair -> requestProcessor.Process(pair.left, pair.right));
票数 4
EN

Stack Overflow用户

发布于 2018-01-09 23:34:31

由于没有将thenCombine()thenCompose()结合在一起的方法,所以可以使用thenCompose()来解压缩来自thenCombine()的嵌套CompletableFuture

代码语言:javascript
复制
CompletableFuture<CompletableFuture<String>> future3 = 
    future1.thenCombine(future2, (request,token) -> 
        requestProcessor.Process(request,token));

CompletableFuture<String> future4 = future3.thenCompose(c -> c);
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48164092

复制
相关文章

相似问题

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