Axios: La captura no devuelve Error

Creado en 2 mar. 2016  ·  3Comentarios  ·  Fuente: axios/axios

¿Por qué catch devuelve un objeto y no un objeto de error?

Comentario más útil

Así es como se hace con $ http de Angular, en el que se basa esta biblioteca. Más o menos es un artefacto y no necesariamente la forma correcta de hacer las cosas. Me gustaría pasar a una ruta de error más consistente donde se usa un Error que tiene detalles de respuesta adjuntos si es relevante.

function createError(message, details) {
  var err = new Error(message);

  Object.keys(details, function (key) {
    err[key] = details[key];
  });

  return err;
}

createError('timeout of ' + config.timeout + 'ms exceeded', {
  code: 'ECONNABORTED',
  config: config
});

También me gustaría cambiar la biblioteca para rechazar solo Promise cuando ocurra un error real, independientemente del código de estado HTTP. Mientras que ahora se rechaza todo lo que esté fuera del rango 200-300.

Todos 3 comentarios

Así es como se hace con $ http de Angular, en el que se basa esta biblioteca. Más o menos es un artefacto y no necesariamente la forma correcta de hacer las cosas. Me gustaría pasar a una ruta de error más consistente donde se usa un Error que tiene detalles de respuesta adjuntos si es relevante.

function createError(message, details) {
  var err = new Error(message);

  Object.keys(details, function (key) {
    err[key] = details[key];
  });

  return err;
}

createError('timeout of ' + config.timeout + 'ms exceeded', {
  code: 'ECONNABORTED',
  config: config
});

También me gustaría cambiar la biblioteca para rechazar solo Promise cuando ocurra un error real, independientemente del código de estado HTTP. Mientras que ahora se rechaza todo lo que esté fuera del rango 200-300.

@mzabriskie
También podría considerar el uso de un indicador de configuración para determinar qué acción tomar cuando se devuelve una respuesta que no sea 2xx / 3xx.

El request-promise lib usa el indicador / opción simple para esto. Cuando simple es true , la solicitud-promesa se rechaza por errores ajenos a la red (2xx, 3xx). Cuando la bandera es falsa, no rechaza nada y pasa a ser responsabilidad del usuario. He encontrado que esto es muy útil y tengo aplicaciones que usan ambas configuraciones. Creo que comúnmente tengo un conjunto simple en true ya que generalmente es un IMO predeterminado mejor.

https://github.com/request/request-promise#get -a-rechazo-solo-si-la-solicitud-falló-por-razones-técnicas

Cerrando como duplicado de # 24

¿Fue útil esta página
0 / 5 - 0 calificaciones