javascript - شرح - معالجة خطأ في http AngularJS الحصول على ثم بناء
angularjs شرح (4)
كيف يمكنني التعامل مع خطأ HTTP ، على سبيل المثال ، 500 ، عند استخدام AngularJS "http get then" (الوعود)؟
$http.get(url).then(
function(response) {
console.log('get',response)
}
)
المشكلة ، لأي استجابة غير 200 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_ ، طريقة مختلفة.