javascript - tutorial - promise http
Manejo de errores en AngularJS http get build (5)
$http.get(url).success(successCallback).error(errorCallback);
Reemplace successCallback y errorCallback con sus funciones.
Editar: La respuesta de Laurent es más correcta teniendo en cuenta que él está usando then
. Sin embargo, lo dejo aquí como una alternativa para las personas que visitarán esta pregunta.
¿Cómo puedo manejar un error de HTTP, por ej. 500, cuando uso la construcción de AngularJS "http get then" (promesas)?
$http.get(url).then(
function(response) {
console.log(''get'',response)
}
)
El problema es que, para cualquier respuesta HTTP no 200, no se llama a la función interna.
Necesita agregar un parámetro adicional:
$http.get(url).then(
function(response) {
console.log(''get'',response)
},
function(data) {
// Handle error here
})
Prueba esto
function sendRequest(method, url, payload, done){
var datatype = (method === "JSONP")? "jsonp" : "json";
$http({
method: method,
url: url,
dataType: datatype,
data: payload || {},
cache: true,
timeout: 1000 * 60 * 10
}).then(
function(res){
done(null, res.data); // server response
},
function(res){
responseHandler(res, done);
}
);
}
function responseHandler(res, done){
switch(res.status){
default: done(res.status + ": " + res.statusText);
}
}
Puedes hacer que este bit sea más claro al usar:
$http.get(url)
.then(function (response) {
console.log(''get'',response)
})
.catch(function (data) {
// Handle error here
});
Similar a la respuesta @ this.lau_, enfoque diferente.
Si desea manejar los errores del servidor de forma global, es posible que desee registrar un servicio interceptor para $ httpProvider:
$httpProvider.interceptors.push(function ($q) {
return {
''responseError'': function (rejection) {
// do something on error
if (canRecover(rejection)) {
return responseOrNewPromise
}
return $q.reject(rejection);
}
};
});
Documentos : http://docs.angularjs.org/api/ng.$http