कोड पर विचार करें:
var myApp = angular.module('myApp', []);
मार्गों:
myApp.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'app.html',
controller:myAppController,
resolve:{
resolveData:function(Resolver){
return Resolver();
}
}
});
});
हल:
myApp.factory('Resolver', ['$http', function($http){
return function(){
return $http({url: '/someurl',method: "GET"}).then(function(data) {
// dependent call 1
$http({url: '/someotherurl',method: "GET" }).then(function(data) {
});
// dependent call 2
$http({url: '/someanotherurl',method: "GET" }).then(function(data) {
});
});
}
}]);
से ऊपर मैं के रूप में एक के अंदर 2 कॉल नेस्ट है वे अभिभावक कॉल द्वारा लौटाए गए डेटा पर निर्भर हैं।
मैं क्या करना चाहता हूं: रिजॉल्वर वापस लौटाएं जब उनमें से सभी ने पूरा किया हो और केवल माता-पिता कॉल न करें।
मैं $ q.all() का उपयोग नहीं कर सकता क्योंकि कॉल के 2 कॉल पहले कॉल के आश्रित हैं।
संक्षेप में, मेरे 3 कंट्रोलर को केवल 3 कॉल पूरा होने के बाद ही लोड किया जाना चाहिए।
हाय अजय! तत्काल उत्तर के लिए धन्यवाद। लेकिन क्या आपको लगता है कि अगर मैं चेनिंग का उपयोग करता हूं तो मैं अगली कॉल में पहले कॉल द्वारा लौटाए गए डेटा को पास कर पाऊंगा? – AlwaysALearner
हाँ प्रत्येक फ़ंक्शन के अंदर डेटा पिछले –
से लौटा गया डेटा है मेरी चेन मेरी ज़रूरत को पूरा नहीं करता है। मैं नेस्टेड कॉल के लिए गया था। लेकिन $ q ने वास्तव में मुझे चीज़ को ठीक करने में मदद की। धन्यवाद। वोट दिया! :) – AlwaysALearner