मुझे असीमित परिणाम के साथ अपवाद को संभालने का एक स्पष्ट तरीका दिखाई नहीं देता है। उदाहरण के लिए, अगर मैं एक एसिंक ऑपरेशन पुनः प्रयास करना चाहता हूं। मैं इस तरह कुछ की उम्मीद करता हूं, हालांकि हैंडलएसिंक ऐसा नहीं करता जो आपको लगता है - यह कॉलबैक को अन्य थ्रेड पर असीमित रूप से चलाता है। यहां एक ComplestStage वापस लौटना सही नहीं है। दिन के खतरे का सवाल: तब अपवाद के रूप में अपवाद है तो क्या करना है।जावा 8 CompletableFuture पुनर्प्राप्ति के बराबर के साथ? उदाहरण के लिए असाधारण रूप से लेकिन CompletableFuture <U>
CompletionStage<String> cf = askPong("cause error").handleAsync((x, t) -> {
if (t != null) {
return askPong("Ping");
} else {
return x;
}
});
कहाँ askPong एक अभिनेता पूछते हैं:
public CompletionStage<String> askPong(String message){
Future sFuture = ask(actorRef, message, 1000);
final CompletionStage<String> cs = toJava(sFuture);
return cs;
}
"सही नहीं है" का क्या अर्थ है? आप किस व्यवहार की तलाश में हैं? –
वह संकलित नहीं होगा। आप में एक CompletableFuture वापस नहीं कर सकते हैं हैंडलएसिंक - आपको यू को वापस करना होगा। मैं अपवाद मामले में के बजाय एक CompletableFuture वापस करने में सक्षम होना चाहता हूं। मैं स्केल के बराबर की तलाश कर रहा हूं या वादा वसूली खेल सकता हूं (जो असाधारण रूप से है लेकिन फ़ंक्शन में असीमित परिणाम के साथ)। – JasonG
मैंने प्रश्न में थोड़ा सा स्पष्ट करने की कोशिश की। हो सकता है कि मैं हैंडलएसिंक का सही उपयोग नहीं कर रहा हूं लेकिन इसका मतलब यह नहीं है "और एक एसिंक परिणाम लौटाएं"। – JasonG