के साथ एक सिंक्रोनस विधि के साथ असीमित कॉल की एक श्रृंखला को लपेटना मेरा वर्तमान कोड परिणाम में समाप्त होने वाली असीमित प्रक्रियाओं की श्रृंखला का उपयोग करता है। मुझे इनमें से प्रत्येक को इस तरह से लपेटने की ज़रूरत है कि प्रत्येक को एक सिंक्रोनस विधि द्वारा रिटर्न वैल्यू के रूप में उपयोग किया जाता है। मैं ऐसा करने के लिए निष्पादक सेवाओं का उपयोग करना चाहता हूं, ताकि इनमें से कई एक ही समय में हो सकें। मुझे लगता है कि भविष्य मेरे कार्यान्वयन के लिए प्रासंगिक हो सकता है, लेकिन मैं ऐसा करने के लिए एक अच्छा तरीका नहीं समझ सकता।वापसी मूल्य
मैं अब क्या है:
public class DoAJob {
ResultObject result;
public void stepOne() {
// Passes self in for a callback
otherComponent.doStepOne(this);
}
// Called back by otherComponent once it has completed doStepOne
public void stepTwo(IntermediateData d) {
otherComponent.doStepTwo(this, d);
}
// Called back by otherComponent once it has completed doStepTwo
public void stepThree(ResultObject resultFromOtherComponent) {
result = resultFromOtherComponent;
//Done with process
}
}
यह आंतरिक रूप से बहुत अच्छी तरह से काम किया है, लेकिन अब मैं की तरह एक वापसी मान वाला एक तुल्यकालिक विधि में मेरी प्रक्रिया मैप करने की आवश्यकता:
public ResultObject getResult(){
// ??? What goes here ???
}
किसी को भी करता है इस सुन्दर तरीके से कार्यान्वित करने के बारे में एक अच्छा विचार है?
इस बात में एक चीज गायब है: आप अंत में विभिन्न कार्यों के परिणाम ऑब्जेक्ट को अंत में कैसे जोड़ सकते हैं? –
मुझे यकीन नहीं है कि मैं सवाल समझता हूं। आम तौर पर प्रक्रिया को नए DoAJob.stepOne() द्वारा लात मार दिया जाता है; stepTwo() विधि अन्य कॉम्पोनेंट से कॉलबैक द्वारा शुरू की जाती है। कॉलबैक की श्रृंखला के अंत में, परिणाम ऑब्जेक्ट सही ढंग से आबादी वाला है। किसी भी मध्यवर्ती डेटा बिट्स को अंतिम परिणाम में एकीकृत किया जाता है। – irondwill