从 Consumer 转移到 CompletableFuture

Transpose from Consumer to CompletableFuture

我目前使用的是 API,很遗憾,我无法轻易更改它。这个 API 有一些这样的方法:

public void getOffers(Consumer<List<Offer>> offersConsumer) {
        final Call<List<Offer>> offers = auctionService.getOffers();
        handleGetOffers(offersConsumer, offers);
    }

这是一个使用改造的网络 api,它使我能够处理消费者的响应,但我更愿意使用 CompletableFutures。

我正在使用从该端点接收到的数据在游戏中构建一个界面,从而构建一个清单,它基本上充当 api 的前端。我想做的是让我的组合方法等待消费者完成,然后提供处理后的结果。这是我到目前为止所拥有的,但我不知道如何从消费者到 CompletableFuture 的步骤:

    @Override
    public CompletableFuture<Inventory> get(Player player) {
        return CompletableFuture.supplyAsync(() -> {
            auctionAPI.getOffers(offers -> {
                //process the offers, then return the result of the processing, in form of an "Inventory"-Object.
                }

            });


        });
    }

我现在需要return收到所有项目并进行处理后的处理结果。我怎样才能做到这一点?

沿线的东西应该有效:

@Override
public CompletableFuture<Inventory> get(Player player) {
    CompletableFuture<Inventory> result = new CompletableFuture<>();
    CompletableFuture.supplyAsync(() -> {
        auctionAPI.getOffers(offers -> {
            //process the offers, then return the result of the processing, in form of an "Inventory"-Object.
            result.complete(inventory);
            }

        });
        return null;
    });

    return result;
}