Requisitos: Los proyectos Angular, al hacer clic en un botón en una página, envían una solicitud HTTP, porque algunas interfaces consumen mucho tiempo, necesitan mostrar el efecto de animación de carga; cuando se completa la petición HTTP, la animación de carga se cerrará.Cuando la solicitud tiene éxito o ocurre un error, necesitas desactivar la animación de carga。
Escritura convencional
Como sigue:
Es decir, cuando la petición tiene éxito y ocurre un error, necesitas llamar a la animación de cierre de carga, ¿hay alguna forma más sencilla? Similar a intentar-atrapar-finalmente en Do#.
Usa el operador de finalización
Lo que hace es try-catch-finalfinalmenteFunciona, solo necesitamos escribir el código una vez, y la lógica se ejecutará independientemente de si tiene éxito o fracaso.
El código es el siguiente:
¿Cómo funciona la finalización? Básicamente añade un adito de callback (fn) al desensamblaje de un objeto observable mediante suscripción. Esto garantiza que se llamará por error, completación y cancelación de suscripción.
Obsérvese que el operador de finalización se ejecuta tan pronto como se termina nuestro Observable. ¡Esto es importante! Para Angular HTTP, esto funciona muy bien porque el servicio HTTP de Angular devuelve "listo" una vez que la petición está completa.
(Fin) |