angularjs - सफलता हैंडलर के बाहर $ http वादा प्रतिक्रिया का उपयोग कैसे करें
angular-promise angular-http (2)
$scope.tempObject = {};
$http({
method: 'GET',
url: '/myRestUrl'
}).then(function successCallback(response) {
$scope.tempObject = response
console.log("Temp Object in successCallback ", $scope.tempObject);
}, function errorCallback(response) {
});
console.log("Temp Object outside $http ", $scope.tempObject);
मुझे
successCallback
में प्रतिक्रिया मिल रही है, लेकिन
$http
नहीं मिल रहा है।
इसका
undefined
।
$scope.tempObject
बाद
response
या
$scope.tempObject
का उपयोग कैसे करें
लेकिन अगर मैं कॉलबैक के बाद $ गुंजाइश.tempObject का उपयोग करना चाहता हूं तो मैं इसका उपयोग कैसे कर सकता हूं। ?
आपको httpPromise से चेन करने की आवश्यकता है। HttpPromise को सहेजें और ऑनफुल्फल्ड हैंडलर फ़ंक्शन के लिए मान लौटाएं।
//save httpPromise for chaining
var httpPromise = $http({
method: 'GET',
url: '/myRestUrl'
}).then(function onFulfilledHandler(response) {
$scope.tempObject = response
console.log("Temp Object in successCallback ", $scope.tempObject);
//return object for chaining
return $scope.tempObject;
});
उसके बाद आप httpPromise से चेन करते हैं।
httpPromise.then (function (tempObject) {
console.log("Temp Object outside $http ", tempObject);
});
अधिक जानकारी के लिए, AngularJS $ q सेवा एपीआई संदर्भ देखें - वादे का पीछा करते हुए ।
किसी भी लम्बाई की श्रृंखला बनाना संभव है और चूंकि एक वादा दूसरे वादे के साथ हल किया जा सकता है (जो आगे अपने प्रस्ताव को स्थगित कर देगा), श्रृंखला में किसी भी बिंदु पर वादों को हल करना / रोकना संभव है। यह शक्तिशाली एपीआई को लागू करना संभव बनाता है। 1
वादा-आधारित अतुल्यकालिक संचालन की व्याख्या
console.log("Part1");
console.log("Part2");
var promise = $http.get(url);
promise.then(function successHandler(response){
console.log("Part3");
});
console.log("Part4");
कंसोल पार्ट "पार्ट 4" के लिए सर्वर से डेटा वापस आने का इंतजार नहीं करना पड़ता है। यह एक्सएचआर शुरू होने के तुरंत बाद निष्पादित होता है । "Part3" के लिए कंसोल लॉग एक सफल हैंडलर फ़ंक्शन के अंदर है जो $ q सेवा द्वारा आयोजित किया जाता है और सर्वर से डेटा आने के बाद आह्वान किया जाता है और XHR पूरा होता है ।
डेमो
console.log("Part 1");
console.log("Part 2");
var promise = new Promise(r=>r());
promise.then(function() {
console.log("Part 3");
});
console.log("Part *4*");
अतिरिक्त संसाधन
-
कोणीय $ http सफलता / त्रुटि विधियां क्यों वंचित हैं? V1.6 से हटाया गया?
-
निंजा स्क्वाड - जाल, विरोधी पैटर्न और एंगुलरजेएस के वादों के बारे में सुझाव
अच्छी थ्योरी लेकिन.catch
और.catch
विधियों का उपयोग करने के लिए अपडेट किया जाना चाहिए
$ http कॉल async कॉल है। कॉलबैक फ़ंक्शन निष्पादित होता है जब उसने कोई प्रतिक्रिया दी है। इस बीच फ़ंक्शन के बाकी कार्य निष्पादित होते रहते हैं और {} के रूप में $ गुंजाइश.tempObject लॉग करते हैं। जब $ http को हल किया जाता है तो केवल $ गुंजाइश ।empObject सेट किया जाता है। कोणीय दो तरह से बंधन का उपयोग करके स्वचालित रूप से परिवर्तित मूल्य को बांध देगा।
{{tempObject}} व्यू में ही अपडेट होगा।
यदि आप कॉलबैक के बाद tempObject का उपयोग करना चाहते हैं तो ऐसा करें
then(function(data){
onSuccess(data);
},function(){
});
function onSuccess(data){
// do something
}