我有一个listenableFuture,我想链接另一个只能在原始的ListenableFuture运行时运行的listenableFuture,所以像这样:
ListenableFuture<Response> respFuture = Futures.transform(
listenableFuture,
res -> res.doSomething()
);
我希望doSomething
仅在调用respFuture
时运行(通过调用get()
或addListener
或类似内容。
但是,当我调用transform
时,代码会立即运行。
有没有办法将运行推迟到调用第一个listenableFuture时?
答案 0 :(得分:0)
嗯,是的。返回listenableFuture本身,不改变它,然后调用例如listenableFuture.get()。doSomething(),你知道你想要调用doSomething()。
Futures.transform的整个想法是将未来与未来的转型捆绑在一起,这通常就是你想做的事情。但在你的情况下,按照我上面提出的建议更有意义。