Tengo una promesa $.ajax
y deseo comprobar si mi respuesta (sintácticamente válida) contiene un error, lo que desencadena el estado rechazado en ese caso.Lanzar un error en el objeto diferido de jQuery
He trabajado con mi propia biblioteca de promesas que hace estas tareas fácilmente. Realmente no me gusta la implementación de jQuery Promise (cache) con su Deferred
object y puede haber pasado por alto algo, porque rara vez lo uso. Creo que el camino a seguir es sólo con .then()
, que parece ser bastante complicado:
return $.ajax(...).then(function success(response) {
var problem = hasError(response);
if (problem) {
var error = new $.Deferred;
error.reject(problem);
return error;
} else
return response;
});
Esto debería devolver una promesa que es rechazado en caso de errores de red o problemas con la respuesta. Pero, ¿el retorno de un diferido rechazado es realmente el [único | mejor | más corto] camino a seguir?
También solicitaré ayuda sobre cómo tratar con esos "manejadores de respuestas que lanzan errores" en las opciones de ajax en sí mismos, no pude encontrar buena documentación sobre ellos.
Descargo de responsabilidad: No, no puedo cambiar las respuestas del servidor. El método de detección de problemas es sincrónico. No quiero utilizar otras bibliotecas, estoy particularmente interesado en la forma en que jQuery resuelve esto.
bien, con '.then()' Me refería a la cosa que '.pipe()' hace en jQuery :-( – Bergi
a partir de Jquery 1.8 tubería === luego – Plynx
Sí, afortunadamente consiguieron al menos eso arreglado. – Bergi