3 votes

Vérifiez si un observable est complet

Je dois afficher un toast après l'achèvement d'un observable, comment puis-je le faire, mon code est :

this.commerceCtrl.UpdateCategories(this.toSave).subscribe(data => {
  }, error => {
    this.mainFunction.showError(error)
  }),
  complete => {
    this.mainFunction.showToast(this.localization.message_ok)
  }

J'ai essayé de faire comme ça :

this.commerceCtrl.UpdateCategories(this.toSave).subscribe(data => {
  }, error => {
    this.mainFunction.showError(error)
  }),
  () => {
    this.mainFunction.showToast(this.localization.message_ok)
  }

mais ça ne fonctionne pas

7voto

jo_va Points 11759

Vous devez passer le gestionnaire complete comme troisième argument à subscribe.

Dans votre code, il suffit de déplacer la parenthèse fermante à la fin.

Changer ce code:

this.commerceCtrl.UpdateCategories(this.toSave).subscribe(data => {
  }, error => {
    this.mainFunction.showError(error)
  }), // <===== Supprimez cette parenthèse
  () => {
    this.mainFunction.showToast(this.localization.message_ok)
  }; // <====== Elle devrait être ici

A ceci:

this.commerceCtrl.UpdateCategories(this.toSave).subscribe(
  data => {
    // Corps du gestionnaire suivant
  }, error => {
    this.mainFunction.showError(error)
  }, () => {
    this.mainFunction.showToast(this.localization.message_ok)
  }
);

2voto

yusufcmrt Points 156

Vous pouvez donner un paramètre objet à la fonction subscribe():

this.commerceCtrl.UpdateCategories(this.toSave).subscribe({
   next: value => { ... },
   error: err => { ... },
   complete: () => { ... }
});

0voto

LkPark Points 526

Vous pouvez essayer d'utiliser la méthode finally

this.commerceCtrl.UpdateCategories(this.toSave).finally(() => {
    // compléter
}).subscribe((data) => {
    // succès
}, (erreur) => {
    // erreur
});

Source: https://github.com/angular/angular/issues/7865#issuecomment-204408637

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X