只有在请求时,番石榴变换listenableFuture

时间:2018-02-11 16:35:58

标签: guava

我有一个listenableFuture,我想链接另一个只能在原始的ListenableFuture运行时运行的listenableFuture,所以像这样:

ListenableFuture<Response> respFuture = Futures.transform(
                    listenableFuture,
                    res -> res.doSomething()
            );

我希望doSomething仅在调用respFuture时运行(通过调用get()addListener或类似内容。

但是,当我调用transform时,代码会立即运行。 有没有办法将运行推迟到调用第一个listenableFuture时?

1 个答案:

答案 0 :(得分:0)

嗯,是的。返回listenableFuture本身,不改变它,然后调用例如listenableFuture.get()。doSomething(),你知道你想要调用doSomething()。

Futures.transform的整个想法是将未来与未来的转型捆绑在一起,这通常就是你想做的事情。但在你的情况下,按照我上面提出的建议更有意义。