वादे हमेशा वादे होते हैं - और इसी तरह वे होना चाहिए। हालांकि, सीधे विचार को एक वादा बांधना संभव है, लेकिन मैं आम तौर पर इस अभ्यास को हतोत्साहित करता हूं क्योंकि इसमें पारदर्शिता की कमी होती है और झिलमिलाहट देखने का कारण बन सकती है। एक बेहतर समाधान एक then
कॉल में एक गुंजाइश मान देना है:
myService.then(function(val) {
$scope.val = val;
});
जब $scope.val
के लिए तैयार है, यह हमेशा सीधे एक मूल्य के रूप में व्यवहार किया जा सकता है - क्योंकि यह है।
उसने कहा, अगर आप सीधे वादा कार्य करना चाहते हैं, तो आपको इसे केवल एक वादे की तरह व्यवहार करना होगा; यानी, आपको promise.then(function() { ... });
पर कॉल करने की आवश्यकता है। यह एक असुविधा की तरह प्रतीत होता है, लेकिन वास्तव में यह केवल एक प्रमाण है कि कितने शक्तिशाली वादे हैं।
यदि आप वादे पर कुछ और जानकारी चाहते हैं, तो मैंने हाल ही में Google+ Hangout के लिए उन पर (और कोड उदाहरण प्रदान किए) पर भरोसा किया, जहां मैंने AngularJS: AngularJS Hangout -- Promises, Promises Promises, Promises में किए गए फायदे, सामान्य उपयोग और सर्वोत्तम प्रथाओं को शामिल किया। कभी खत्म होने वाली वादे श्रृंखलाओं का विचार विशेष रूप से संबोधित नहीं किया गया था, हालांकि मेरे पास मेरे सिर के ऊपर से टाइमकोड नहीं है।
आशा है कि इससे मदद मिलती है!
स्रोत
2013-05-01 04:31:03
धन्यवाद! मैंने आपकी सलाह ली और 'स्कोप' फ़ंक्शन में अपना स्कोप वैरिएबल असाइन किया। सब कुछ वहां से चिकनी काम करता है। लेकिन मैं उत्सुक हूं कि ऐसे विशिष्ट मामले हैं जहां सीधे वादे को बांधने का अर्थ होता है ... चूंकि कोणीय इस कार्यक्षमता को प्रदान करता है। – sthomps
मुझे ऐसे किसी भी मामले से अवगत नहीं है; मुझे लगता है कि कार्यक्षमता ज्यादातर सुविधा के लिए पेश की जाती है। लेकिन शायद किसी और की राय है ... –
उत्तर देना "आप ऐसा नहीं करना चाहते" हमेशा सहायक नहीं होता है। मैं अपने मामले में निश्चित रूप से ऐसा करना चाहता हूं क्योंकि मैं डिबगिंग कर रहा हूं और मुझे नहीं पता कि वादे का मूल्य कैसे प्राप्त किया जाए। यह निश्चित रूप से किसी भी तरह से संभव होना चाहिए। – Machisuji