Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

425
Vistas
Cualquier escenario (s) que RXJS Observable Subscribe no desencadenará ni el éxito ni el error

Esto es más como una pregunta que resolver un problema.
Me gustaría saber si hay algún escenario en el que tanto "Éxito" como "Error" no se activen.

La llamada posterior a "/logout" dará como resultado el código de retorno de estado Http 200 con el cuerpo de respuesta vacío que se espera

 import { httpClient } from angular/common/http; private http: HttpClient; this.http.post<any>('/logout', {}) .subscribe( () => { console.log("Logout"); }, error => { console.log(error); }, () => { console.log("Finally"); });

Emitirá "Finalmente" el 100% del tiempo. Eso significa que el éxito y el error no se activan en absoluto.

¿Hay posibilidades de que el éxito y el error no se activen? Y claramente la respuesta del código de estado http es 200 OK.

Actualización: la respuesta que proporcionó @meriton funciona muy bien.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Observable , en general, no están obligados a completar o error. Pueden permanecer vivos y seguir emitiendo valores para siempre.

Sin embargo, se garantiza que el Observable devuelto por HttpClient terminará con éxito o error (aunque el error puede tardar unos minutos en caso de que se agote el tiempo) según el estado HTTP de la respuesta. La presencia o ausencia de un cuerpo no afecta esto. Si la solicitud tiene éxito, el observable emitirá exactamente un valor: el cuerpo de la respuesta (o null si el cuerpo de la respuesta está ausente).

No puedo reproducir su afirmación de que "el éxito o el error no se activan en absoluto". ¿Puede haber entendido mal lo que significan las devoluciones de llamada? Cuando proporciona tres devoluciones de llamada para suscribirse, son, en orden:

  • la next devolución de llamada, que recibe valores emitidos
  • la devolución de llamada de error , que notifica que el Observable ha abortado debido a un error
  • la devolución de llamada complete , que notifica que el Observable se completó con éxito

El peligro de mezclar las devoluciones de llamada es una de las razones por las que el equipo de RXJS ha desaprobado pasar varias devoluciones de llamada como argumentos separados para suscribirse en RXJS 8. La forma de prueba futura de escribir su código sería:

 this.http.post<any>('/logout', {}).subscribe({ complete: () => { console.log("Logout successful") }, error: (error) => { console.log(error); } });

Por cierto, ninguna de estas devoluciones de llamada significa " finally ", como en la cláusula final de una declaración de try , que se ejecuta tanto en caso de éxito como de error. Si desea hacer algo independientemente de si el Observable se completó con éxito o falló con un error, puede usar el operador de finalize .

about 4 years ago · Juan Pablo Isaza Denunciar

0

  1. El éxito de la biblioteca http depende del Estado: 200, no requiere que el cuerpo del mensaje esté presente

  2. Código de ejemplo de uso de flujo de tubería RXJS, donde puede controlar el flujo capturando el éxito y el error, controlando el tiempo de espera. También demuestra cómo puede usar el método .subscribe() como clásico Finalmente

Ejemplo de flujo RXJS:

 this.http .post<any>('/logout',{}) .pipe( map(() => { // OK return { success: true, err: null }; }), timeout(10000), // CONTROL TIMEOUT catchError((e) => { // IN CASE OF ERROR return of({success: false, err:e}); }) ) .subscribe((result) => { // FINALLY here if (result.success) { console.log('Logged out successfully'); } else { console.log('Logout failed', result.err); } });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda