В Java 8 я пишу метод DAO, который вызывает метод, который возвращает ListenableFuture (в этом случае это асинхронный запрос Cassandra, который возвращает ResultSetFuture).Как вернуть свои собственные фьючерсы в Java?
Однако я зациклился на том, как я должен вернуть Будущее вызывающему методу DAO. Я не могу просто вернуть ResultSetFuture, потому что это будущее возвращает ResultSet. Я хочу обработать ResultSet и вернуть другой объект. Например:
public ListenableFuture<ThingObj> queryForThingAsync(String thingId) {
ListenableFuture<ResultSet> rsFuture = db.getSession().executeAsync(QueryBuilder.select().all().from("thingSchema","Thing").where(eq("thingId",thingId)));
// Now what? How do I create a ListenableFuture<ThingObj> given a ListenableFuture<ResultSet> and a method that can convert a ResultSet into a ThingObj?
}
вы используете типы параллельности Java 8, или Гуава ? У Guava есть тип ListenableFuture, JDK этого не делает. –
Cassandra api возвращает ListenableFuture, однако я был бы счастлив использовать типы параллелизма Java 8. Я действительно не заметил, что ListenableFuture был из guava. Теперь я понимаю, что CompletableFuture, вероятно, является подходящим классом. Тем не менее, я все еще не уверен, как это сделать. – HappyEngineer
ОК - я обновляю свой ответ, чтобы включить альтернативное решение, используя 'CompletableFuture'. –