2013-06-06 11 views
9

मैं समानांतर में 4 से 10 $ http कॉल प्राप्त कर रहा हूं। लेकिन उपयोगकर्ता खोज कार्रवाई के बाद मुझे एक ही दृश्य में प्रदर्शन की आवश्यकता है लेकिन विभिन्न परिणाम के साथ। मैं डेटा और नए $ http क्वेरी कॉल के सेट को पॉप्युलेट करता हूं। लेकिन पिछले $ http आमंत्रण (वादे) अभी भी पॉपुलटिंग या कार्रवाई में हैं, जो $ स्कोप को प्रभावित करते हैं।

मेरे संभव गंदा समाधान है ..

बहु एप्लिकेशन (multimodule) पेज एक गतिशील एप्लिकेशन द्वारा नियंत्रित गतिशील क्षेत्रों में हो सकता है जो का उपयोग करना। उपयोगकर्ता घटनाओं पर उस तत्व को हटा दें जो घटना से मेल खाता है। उदाहरण, खोज परिणाम, यदि मैं विभिन्न $ http कॉल का उपयोग करके विभिन्न स्रोतों से परिणाम प्रदर्शित करना चाहता हूं। यदि उपयोगकर्ता नए कीवर्ड के साथ खोज करता है, तो मैं परिणाम ng-app तत्व और बूटस्ट्रैप नया तत्व निकालने जा रहा हूं।

उत्तर

26

आप संस्करण 1.1.5, जो $ http अनुरोधों को कैंसिल करने की क्षमता है का उपयोग करना चाहिए:

https://github.com/angular/angular.js/blob/master/CHANGELOG.md

// set up a dummy canceler 
var canceler = $q.defer(); 

// use it as a timeout canceler for the request 
$http({method: 'GET', url: '/some', timeout: canceler.promise}).success(
    function (data) { alert("this won't be displayed on cancel"); } 
).error(
    function (data) { alert("this will be displayed on cancel"); } 
) 

// now, cancel it (before it may come back with data) 
$rootScope.$apply(function() { 
    canceler.resolve(); 
}); 

आप सभी अनुरोधों के लिए एक ही Canceler उपयोग कर सकते हैं, और बस से पहले ही हल नया सेट शुरू करना

+1

यह वही है जो मैं ढूंढ रहा हूं। आपके अद्यतन के लिए धन्यवाद। –

+0

मुझे भी - 1.1.5 CHANGELOG के लिए लिंक https://github.com/angular/angular.js/commit/5cc9837d931dfb2d374bef24688888e0c52c75d1 – Phantomwhale

+0

क्या इसके लिए कोई पुन: प्रयोज्य पैटर्न है? मैं प्रसंस्करण को रद्द करना चाहता हूं जो परिणाम के बाद भी होता है। – user239558

संबंधित मुद्दे