在使用ratpack中使用 Blocking.get()
方法之后,如何返回对象或列表?
Blocking.get(()->
xRepository.findAvailable()).then(x->x.stream().findFirst().get());
上面的行返回void-我希望能够执行以下类似的操作,以便它在当时的子句中返回对象。我尝试添加返回语句,但行不通。
Object x = Blocking.get(()->
xRepository.findAvailable()).then(x->x.stream().findFirst().get());
您可以在可用时使用映射与值一起使用。
Blocking.get(() -> xRepository.findAvailable())
.map(x -> x.stream().findFirst().get())
.then(firstAvailable -> ctx.render("Here is the first available x " + firstAvailable))
ratpack的Promise<T>
不提供阻止当前线程并返回结果的Promise.get()
的阻止操作。相反,您必须订阅Promise对象。您可以使用的方法之一是Promise.then(Action<? super T> then)
,它允许您指定和操作给定值时会触发的操作。在上面的示例中,我们将ctx.render()
用作触发的操作,当时可以进行阻止操作的值,但您也可以做其他事情。