1

Blocking.get()在 Ratpack中使用方法后如何返回对象或列表?

Blocking.get(()->
            xRepository.findAvailable()).then(x->x.stream().findFirst().get());

上面的行返回 void - 我希望能够执行类似下面的操作,以便它返回 then 子句中的对象。我尝试添加一个 return 语句但不起作用。

Object x = Blocking.get(()->
            xRepository.findAvailable()).then(x->x.stream().findFirst().get());
4

1 回答 1

1

您可以使用 map 来处理可用的值。

Blocking.get(() -> xRepository.findAvailable())
         .map(x -> x.stream().findFirst().get())
         .then(firstAvailable -> ctx.render("Here is the first available x " + firstAvailable))

RatpackPromise<T>不提供像Promise.get()阻塞当前线程并返回结果那样的阻塞操作。相反,您必须订阅 promise 对象。您可以使用的方法之一是Promise.then(Action<? super T> then)允许您指定当给定值可用时将触发的操作。在上面的例子中,我们使用ctx.render()了当阻塞操作的值准备好时触发的动作,但你也可以做其他事情。

于 2017-09-27T23:54:05.630 回答