usar tutorial then promises promesas example create como array all javascript angularjs promise angular-promise angular-http

javascript - tutorial - promise http



Manejo de errores en AngularJS http get build (5)

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

$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