Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

424
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda