AngularJS $ http सफलता/त्रुटि विधियों को बहिष्कृत क्यों किया जाता है? V1.6 से हटाया गया?




angularjs-http angularjs-1.6 (2)

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


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

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

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

- AngularJS अंक # 10508 $http .success/.error कैसे काम करता है।

बहिष्करण नोटिस (v1.5)

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

- AngularJS $ http सेवा API संदर्भ - बहिष्करण नोटिस

अद्यतन करें

.error 1.6 से बहिष्कृत। .success और .error विधियों को हटा दिया गया है।

b54a39 कारण, $http की बहिष्कृत कस्टम कॉलबैक विधियों - .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 पर माइग्रेट करना


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





angularjs-1.6