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 कॉल async कॉल है। कॉलबैक फ़ंक्शन निष्पादित होता है जब उसने कोई प्रतिक्रिया दी है। इस बीच फ़ंक्शन के बाकी कार्य निष्पादित होते रहते हैं और {} के रूप में $ गुंजाइश.tempObject लॉग करते हैं। जब $ http को हल किया जाता है तो केवल $ गुंजाइश ।empObject सेट किया जाता है। कोणीय दो तरह से बंधन का उपयोग करके स्वचालित रूप से परिवर्तित मूल्य को बांध देगा।

{{tempObject}} व्यू में ही अपडेट होगा।

यदि आप कॉलबैक के बाद tempObject का उपयोग करना चाहते हैं तो ऐसा करें

then(function(data){
   onSuccess(data);
},function(){

});

function onSuccess(data){
// do something
}




angular-http