在 Ratpack 中使用 Blocking.get()
方法后如何返回对象或列表?
Blocking.get(()->
xRepository.findAvailable()).then(x->x.stream().findFirst().get());
上面的行返回 void - 我希望能够执行如下操作,以便它返回 then 子句中的对象。我尝试添加返回语句但不起作用。
Object x = Blocking.get(()->
xRepository.findAvailable()).then(x->x.stream().findFirst().get());
最佳答案
您可以使用 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()
作为当阻塞操作的值准备就绪时触发的操作,但您也可以执行其他操作。
关于java - 在 Ratpack 中的 Blocking.get 中返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46458406/