Eşzamansız bir sonucu olan bir istisnayı ele almanın bariz bir yolunu göremiyorum. Örneğin, bir eşzamansız işlemi yeniden denemek istiyorsam. Bunun gibi bir şey beklerdim, ancak handleAsync, düşündüğün şeyi yapmaz - başka bir iş parçacığında geri aramaları eşzamansız olarak çalıştırır. Burada bir TamamlamaStage'i döndürmek doğru değil. Günün tehlike sorusu: o zaman ne zaman o kadar istisnadır. askPong bir aktör sorarJava8 CompletableFuture recoverBu eşdeğer mi? örn., istisnai bir şekilde ancak dönüşü CompletableFuture <U>
CompletionStage<String> cf = askPong("cause error").handleAsync((x, t) -> {
if (t != null) {
return askPong("Ping");
} else {
return x;
}
});
:
public CompletionStage<String> askPong(String message){
Future sFuture = ask(actorRef, message, 1000);
final CompletionStage<String> cs = toJava(sFuture);
return cs;
}
"Doğru değil" ne anlama geliyor? Hangi davranışları arıyorsun? –
Bu, derlenmeyecek. tutamacında bir CompletableFuture döndüremiyorAsync - U dönüşünde, istisna durumunda yerine bir CompletableFuture döndürmek istiyorum. Ben scala eşdeğer veya playwith kurtarma ile eşdeğer arıyorum (ki bu istisnai olarak ama Fonksiyonda asenkron bir sonuç ile). – JasonG
Sorunun kendisinde biraz açıklığa kavuşturmaya çalıştım. Belki de handleAsync'i doğru kullanmıyorum ancak "bir zaman uyumsuz sonucunu döndürmek" anlamına gelmez. – JasonG