पर सफल वादे समाधान से मूल्य असाइन करें मेरे पास एक सुंदर मूर्ख समस्या है। निम्नलिखित पर विचार करें:बाहरी वैरिएबल
vm.feed = getFeed().then(function(data) {return data;});
getFeed()
एक $ q टाल वादा (मैं कोणीय पर हूँ) है कि सफलतापूर्वक विभाजित देता है।
मेरा लक्ष्य सफल कॉलबैक द्वारा लौटाए गए डेटा मान के बराबर vm.feed सेट करना है। चूंकि यह अभी है, कोड द्वारा लौटाए गए $promise
ऑब्जेक्ट के बराबर vm.feed असाइन करता है।
मुझे पता है कि मैं बस हल कर सकता हूं: vm.feed = data
हल किए गए फ़ंक्शन के अंदर लेकिन मैं समझना चाहता हूं कि यह कोड क्यों काम नहीं करता है।
पीडी: वादा सही ढंग से हल हो जाता है और इसे हल करने के बाद भी vm.feed वादा के बराबर रहता है, न कि डेटा। मैं vm.feed की console.log नकल के बाद 10 सेकंड गुजर चुके है
Promise {$$state: Object} $$state: Objectstatus:1 value: Object
कि मूल्य संपत्ति वादा ऑब्जेक्ट के अंदर वादा है कि मैं vm.feed को असाइन करना चाहते का वास्तविक समाधान (Ei data
शामिल)।
धन्यवाद!
उपयोग vm.feed = getFeed()। फिर (फ़ंक्शन (डेटा) {वापसी डेटा.data;}); – ngLover
वादा किसी कारण से लौटाया गया है: परिणाम तुरंत उपलब्ध नहीं है, लेकिन कुछ देरी के बाद। इसे ग्लोबल वैरिएबल में असाइन करने से सभी प्रकार की सिंक्रनाइज़िंग समस्याओं का दरवाजा खुलता है (क्या डेटा पहले से मौजूद है?)। सबसे अच्छा समाधान वादे के कॉलबैक में लौटाए गए डेटा से जुड़े सभी कार्यक्षमताओं को ट्रिगर करना है। – Sirko
यदि 'getFeed'' $ http' का उपयोग करने के बजाय '$ संसाधन' का उपयोग करने पर विचार करें, तो यह एक खाली वस्तु (एक वादा नहीं) वापस लौटाएगा जब संसाधन प्रतिक्रिया – fantarama