क्यों AngularJS $ http सफलता/त्रुटि विधियाँ अपदस्थ हैं? V1.6 से हटाया गया?




angularjs-http angularjs-1.6 (2)

AngularJS प्रलेखन में $http success और error विधियों के लिए एक पदावनति सूचना है। क्या कोई विशेष कारण है कि यह अमूर्त पुस्तकालय से हटा दिया गया था?


वादों से संबंधित इसका उपयोग करने वाला पैटर्न केवल .then(successCallback, errorCallback) , इसलिए वे संभवतः js पैटर्न का उपयोग करने का लक्ष्य रखते हैं।


समस्या यह थी कि। .success और .error विधियाँ .error योग्य नहीं हैं क्योंकि वे रिटर्न मानों की उपेक्षा करते हैं । इससे लोगों को परेशान करने की समस्या पैदा हो गई और उन्होंने लोगों को चेनिंग से अपरिचित लोगों से खराब कोड को प्रोत्साहित किया। पर सभी उदाहरण देखें जो आस्थगित विरोधी पैटर्न का उपयोग करता है।

कोणीयुलरजेएस टीम में से एक को उद्धृत करने के लिए:

IMO। .success और .error पहले स्थान पर API डिज़ाइन के खराब थे। यह समस्या कई स्थितियों पर प्रकाश .success है, जहां डेवलपर्स भ्रमित हो जाते हैं क्योंकि वे या तो उम्मीद करते हैं। .success और .error या ठीक इसके विपरीत काम करने के लिए। एक आदर्श दुनिया में मैं सिर्फ इन $http विशिष्ट "वादों" को खोदूंगा। इसके बजाय हम डेवलपर्स को मानक $q वादा एपीआई का उपयोग करने के लिए प्रोत्साहित कर सकते हैं। प्रतिक्रिया ऑब्जेक्ट के साथ काम करने में स्पष्ट मापदंडों के साथ काम करने में बहुत कम लाभ आईएमओ है।

- AngularJS इश्यू # 10508 $http .success/.error कैसे काम करता है से भिन्न है।

पदावनति सूचना (v1.5)

$http विरासत वादे के तरीके success और error को हटा दिया गया है। इसके बजाय मानक then विधि का उपयोग करें। यदि $httpProvider.useLegacyPromiseExtensions को false सेट किया जाता false तो ये तरीके $http/legacy त्रुटि को फेंक देंगे।

- एंगुलरजेएस $ http सेवा एपीआई संदर्भ - पदावनति सूचना

अद्यतन करें

AngularJS 1.6 से हटाए गए .success और .error विधियों को हटा दिया गया है।

b54a39 कारण, $http b54a39 गए कस्टम कॉलबैक तरीके - .success() और .error() - हटा दिए गए हैं। आप इसके बजाय मानक .catch() .then() / .catch() वादा विधियों का उपयोग कर सकते हैं, लेकिन ध्यान दें कि विधि हस्ताक्षर और वापसी मान अलग-अलग हैं।

$http(...)
  .then(function onSuccess(response) {
    // Handle success
    var data = response.data;
    var status = response.status;
    var statusText = response.statusText;
    var headers = response.headers;
    var config = response.config;
    ...
  }).catch(function onError(response) {
    // Handle error
    var data = response.data;
    var status = response.status;
    var statusText = response.statusText;
    var headers = response.headers;
    var config = response.config;
    ...
  });

- AngularJS डेवलपर गाइड - v1.6 में प्रवास - http





angularjs-1.6