Il y a un observable qui prend des données du point d'extrémité: Lorsque la méthode du filtre de RxJS trouve un élément, il incendie souscrire et tout fonctionne comme prévu.
Mais lorsque le filtre ne trouvera pas d'article, l'abonnement n'est pas tiré. Mais j'aimerais aussi gérer ce scénario. J'ai essayé d'utiliser complet: p> mais que, SPOWNCONCtion est appelé deux fois si des données sont présentes: une fois avec des données et une fois de la fonction remplie. P> Comment gérer l'observable afin que je puisse appeler une fonction spéciale une fois, sans distinction s'il existe des données ou non, avec des données incluses s'il y a des données? P> P>
3 Réponses :
Vous pouvez filtrer vos données dans votre abonnement.
this.get().subscribe((data) => { const filteredData = data.filter(item => item.id = providedId); specialFunction(filteredData); }); function specialFunction(data: any|undefined) { ... }
Vous ne voulez vraiment pas utiliser filtrer. Utilisez une carte et gérez la correspondance dans Abonnez-vous:
this.get().pipe( map(item => { isMatch: item.id == providedId, item }) ).subscribe({ next: (data) => { if (data.isMatch) { specialFunction(data.item); } else { // handle non-match } }, complete: (data) => { specialFunction(); } })
Merci, il y a en fait plusieurs articles pouvant satisfaire au filtre. Je ne sais pas si cela fonctionnera de cette façon
Je ne vois pas pourquoi vous ne pouviez pas vérifier vos conditions à l'intérieur de la carte RXJS Peut-être utiliser Abonnez-vous à la première ou au second observable basé sur une condition p>
blockQuote> Alors peut-être quelque chose comme ceci: p> CODE> et renvoyer la valeur véridée si la condition passe et "autre chose" sinon. Mais pour jeter une autre option, vous pouvez ...
iIF code>
: p>
Traitez-le sur
Terminer code> uniquement et démarrez votre gestionnaire avec
si (données) {...} code>?
C'est une idée, mais comment réussir les données gentiment à côté suivant?