का उपयोग करके तुरंत एक हल किए गए वादे को वापस करें I जावास्क्रिप्ट (विशेष रूप से AngularJS) में अपने सिर को वादे के आसपास पाने का प्रयास कर रहा हूं।एंगुलरजेएस
मेरे पास एक सेवा में एक फ़ंक्शन है, चलो इसे fooService
पर कॉल करें, यह जांचता है कि हमने कुछ डेटा लोड किया है या नहीं। यदि ऐसा किया गया, मैं सिर्फ यह वापस जाने के लिए चाहते हैं, और अगर हम नहीं है, हम डेटा लोड और एक वादा वापस जाने के लिए की जरूरत है:
this.update = function(data_loaded) {
if (data_loaded) return; // We've loaded the data, no need to update
var promise = Restangular.all('someBase').customGet('foo/bar').then(function(data) {
// Do something with the data here
}
return promise;
}
मैं एक समारोह है कि उसके बाद तो जैसे fooService
की update
फ़ंक्शन को कॉल करने के लिए है :
fooService.update(data_loaded).then(function() {
// Do something here when update is finished
})
मेरे यहां मुद्दा यह है कि अगर हम update
समारोह में डेटा लोड करने की जरूरत नहीं है, एक वादा वापस नहीं किए गए है, इसलिए .then()
मेरे अन्य समारोह में नहीं बुलाया जाता है। दृष्टिकोण यहां क्या होना चाहिए - मूल रूप से मैं update()
फ़ंक्शन से तुरंत एक हल किए गए वादे को वापस करना चाहता हूं अगर हमें पुनर्विक्रेता कॉल से डेटा प्राप्त करने की आवश्यकता नहीं है?
एक टिप के लिए धन्यवाद। मैं हमेशा [क्रिस कौवाल के क्यू] (https://github.com/kriskowal/q) के 'क्यू (प्रारंभिक वैल) 'वाक्यविन्यास को याद करता हूं और मुझे' $ q.when (डेटा)' एक ही चाल कर सकते हैं। – runTarm