के साथ बेहतर असीमित नियंत्रण प्रवाह मैं वेब सेवा पर असीमित कॉल के लिए AFNetworking का उपयोग कर रहा हूं। इनमें से कुछ कॉलों को एक साथ जंजीर किया जाना चाहिए, जहां कॉल ए के परिणाम कॉल बी द्वारा उपयोग किए जाते हैं, जिन्हें कॉल सी, आदि द्वारा उपयोग किया जाता है।उद्देश्य-सी ब्लॉक
AFNetworking ऑपरेशन के समय सेट/सफलता विफलता ब्लॉक के साथ एसिंक कॉल का परिणाम संभालता है बनाया गया है:
NSURL *url = [NSURL URLWithString:@"http://api.twitter.com/1/statuses/public_timeline.json"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSLog(@"Public Timeline: %@", JSON);
} failure:nil];
[operation start];
इसका परिणाम नेस्टेड एसिंक कॉल ब्लॉक में होता है जो जल्दी से अपठनीय हो जाता है। यह तब भी जटिल होता है जब कार्य एक दूसरे पर निर्भर नहीं होते हैं और इसके बजाय समानांतर और निष्पादन में निष्पादित होना चाहिए सभी परिचालनों के परिणामों पर निर्भर करता है।
ऐसा लगता है कि नियंत्रण प्रवाह को साफ करने के लिए promises ढांचे का लाभ उठाने का एक बेहतर तरीका होगा।
मैं MAFuture पर आया हूं लेकिन यह पता नहीं लगा सकता कि AFNetworking के साथ इसे कैसे एकीकृत किया जाए। चूंकि एसिंक कॉल में कई परिणाम हो सकते हैं (सफलता/विफलता) और वापसी मूल्य नहीं है, यह आदर्श फिट जैसा प्रतीत नहीं होता है।
किसी भी पॉइंटर्स या विचारों की सराहना की जाएगी।
इस प्रश्न के लिए धन्यवाद - आपके पास कुछ शानदार जवाब हैं।हालांकि शुरुआत में मुझे थोड़ी परेशानी हो रही थी, और यहां वादे को देखकर यहां पहुंचा। यह एंटी-पैटर्न किसी भी एसिंक्रोनस कॉलबैक एपीआई के लिए हो सकता है: यह AFNetworking विशिष्ट नहीं है। मैं एक खोज का उपयोग कर रहा था जैसे: "serialising नेस्टेड ब्लॉक कॉलबैक"। शायद कुछ और टैग मदद कर सकते हैं? यह सिर्फ मुझे हो सकता है! :-) – Benjohn