如何在Ratpack中使用Blocking.get()
方法后返回对象或列表?
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());
答案 0 :(得分:1)
您可以使用map在值可用时使用该值。
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()
作为阻止操作的值准备就绪时触发的操作,但您也可以执行其他操作。