javascript - شرح - معالجة خطأ في http AngularJS الحصول على ثم بناء




angularjs شرح (4)

كيف يمكنني التعامل مع خطأ HTTP ، على سبيل المثال ، 500 ، عند استخدام AngularJS "http get then" (الوعود)؟

$http.get(url).then(
    function(response) {
        console.log('get',response)
    }
)

المشكلة ، لأي استجابة غير 200 HTTP ، لا يتم استدعاء الدالة الداخلية.


http://docs.angularjs.org/api/ng.$http

$http.get(url).success(successCallback).error(errorCallback);

استبدل النجاحتراجع وخطأإعادةالتفاعل مع وظائفك.

تحرير: الجواب لوران هو أكثر صحة معتبرا أنه يستخدم then . ومع ذلك ، سأترك هذا هنا كبديل للأشخاص الذين سيزورون هذا السؤال.


إذا كنت تريد معالجة أخطاء الخادم عالميًا ، فقد تحتاج إلى تسجيل خدمة اعتراضية لـ httpProvider $:

$httpProvider.interceptors.push(function ($q) {
    return {
        'responseError': function (rejection) {
            // do something on error
            if (canRecover(rejection)) {
                return responseOrNewPromise
            }
            return $q.reject(rejection);
        }
    };
});

المستندات : http://docs.angularjs.org/api/ng.$http


يجب عليك إضافة معلمة إضافية:

$http.get(url).then(
    function(response) {
        console.log('get',response)
    },
    function(data) {
        // Handle error here
    })

يمكنك جعل هذا الجزء أكثر نظافة باستخدام:

$http.get(url)
    .then(function (response) {
        console.log('get',response)
    })
    .catch(function (data) {
        // Handle error here
    });

على غرار إجابة @ this.lau_ ، طريقة مختلفة.





angular-http