Bir REST API hizmeti uygulamak için oyun çerçevesi kullanıyorum.java.util.concurrent.Future öğesinden <T> play.libs.F.Promise'a <T>: Java'da nasıl yapılır?
bir görevde ben başka bir hizmete konuşmak için bir java zaman uyumsuz kitaplığı kullanıyorum ve ben bir java.util.concurrent.Future<play.mvc.Result>
içine (Guava Futures.transform(~)
kullanarak) map bir java.util.concurrent.Future<T>
döndürür.
Şimdi play.libs.F.Promise<Result>
'u AsyncResult
yapabilmem için nasıl yapabilirim?
play.libs.Akka.asPromise(scala.concurrent.Future<T> future)
bulunamadı, ancak java birinden bir scala geleceği elde etmek için bir yol bulamıyorum.
DÜZENLEME GEÇİCİ ÇÖZÜM:
Future<T> future = asyncGetTheFuture();
Promise<T> promise = Akka.future(new JFutureToPromise<T>(tempFuture));
için hiçbir yolu yoktur
class JFutureToPromise<T> implements Callable<T> {
final Future<T> future;
final long time;
final TimeUnit unit;
private JFutureToPromise(Future<T> future, long time, TimeUnit unit) {
this.future = future;
this.time = time;
this.unit = unit;
}
private JFutureToPromise(Future<T> future) {
this(future, 10L, TimeUnit.SECONDS);
}
@Override
public T call() throws Exception {
return future.get(time, unit);
}
}
Denedim, sadece Promise j.u.c.Future'ı genişletiyor ... bu yüzden umudum vardı. –
Bu yön çok basit; Promise/Future, jucFuture –
'dan kesinlikle daha güçlü/esnek. Sadece Java'nın Geleceği, bir tamamlama dinleyicisi (gözlemci) ise konsepti destekliyorsa, Java'nın Geleceği ve Scala'nın Geleceği ile bir Sözle Gelecek arasında bir köprü oluşturabilirsin ama var ... – cmbaxter