Exigences : Les projets Angular, lorsqu’ils cliquent sur un bouton sur une page, envoient une requête HTTP car certaines interfaces sont chronophages, doivent afficher l’effet d’animation de chargement ; une fois la requête HTTP terminée, l’animation de chargement sera fermée.Lorsque la requête réussit ou qu’une erreur survient, vous devez désactiver l’animation de chargement。
Écriture conventionnelle
Comme suit:
C’est-à-dire que lorsque la requête réussit et qu’une erreur survient, il faut appeler l’animation de fermeture du chargement, existe-t-il un moyen plus simple ? Similaire à essayer-attraper enfin en Do#.
Utiliser l’opérateur de finalisation
Ce que ça fait, c’est essai-attraper-finalefinalementFonction, nous n’avons besoin d’écrire le code qu’une seule fois, et la logique sera exécutée quel que soit le succès ou l’échec.
Le code est le suivant :
Comment fonctionne la finalisation ? Il ajoute en gros un callback add (fn) au démontage d’un objet observable en s’abonant. Cela garantit qu’il sera appelé en cas d’erreur, de complétion ou de désabonnement.
Notez que l’opérateur de finalisation est exécuté dès que notre observable est terminé. C’est important! Pour Angular HTTP, cela fonctionne très bien car le service HTTP Angular retourne « terminé » une fois la requête terminée.
(Fin) |