Dans le présent formulaire, vous ne pouvez pas. Votre observable est issu d'une source qui n'est pas complet et il ne peut pas se terminer. Ce que vous pouvez faire est d'étendre cette source avec un de remplir la condition. Ce serait le travail comme :
Lorsque vous souhaitez mettre fin à observable, vous ne end$.onNext("anything you want here");. C'est dans le cas de la fin de l'événement est généré par vous. Si c'est une autre source de production de ce cas (keypress, etc.) ensuite, vous pouvez directement mettre un observables dérivés à partir de cette source comme un argument de takeUntil.
Cela semble être un danger potentiel de fuites de mémoire dans le navigateur application. Il semble qu'il peut y avoir nombre infini d'Observateurs connecté avec des Éléments HTML déjà retiré de l'étendue. Il peut empêcher la GC de la suppression de ces éléments, et bien d'autres références à partir de la mémoire... ?? Je ne vous suis pas. Qu'est-ce que "ceci"? Dans tous les cas, la onCompleted gestionnaire sera déclenché pour tous les observateurs, qu'est-ce que vous avez demandé. À propos des fuites de mémoire, lors de la dernière observateur a désabonné de la observables créé par fromEvent, l'écouteur d'événement qui a été créé est supprimé. "ce qui va déclencher onComplete événement pour tous les abonnés Observateurs" est la deuxième partie de ma question. Ce dont j'ai besoin pour atteindre consiste à retirer l'écouteur d'événement. L'achèvement complet d'Observables, donc je peux supprimer toutes les références obsolètes quand je n'écoute pas d'événement plus. C'est exactement ce qui doit arriver. Essayez le code et voir si elle fonctionne. Est-ce toujours une solution appropriée à ce problème? J'essaie de trouver un moyen de créer une annuler le jeton d'annuler plusieurs observables sur "annuler" de la méthode d'évocation.
Ce qui a fonctionné pour moi, c'est à l'aide de la prendre() de l'opérateur. Il fera feu de l'complet de rappel après x nombre d'événements. Donc, en passant à 1, elle complète après le premier événement.
Avis que la méthode subscribe retourne un Jetable, de sorte que vous pouvez vous désabonner à une séquence et d'en disposer facilement. Lorsque vous appelez la méthode dispose sur les observables de la séquence, l'observateur va arrêter d'écouter les observables pour les données. Normalement, vous n'avez pas besoin d'appeler explicitement d'en disposer, sauf si vous devez vous désabonner précoce, ou lorsque la source observables séquence a une durée de vie plus longue que l'observateur. Les abonnements dans les Rx sont conçus pour le feu et oublier les scénarios sans l'utilisation d'un outil de finalisation. Notez que le comportement par défaut de l'Observable opérateurs est de disposer de l'abonnement dès que possible (j'.e, lorsqu'un onCompleted ou onError messages est publié). Par exemple, le code abonnez-vous x pour les deux séquences a et b. Si un renvoie une erreur, x va immédiatement être désabonné de b.
Dans le présent formulaire, vous ne pouvez pas. Votre observable est issu d'une source qui n'est pas complet et il ne peut pas se terminer. Ce que vous pouvez faire est d'étendre cette source avec un de remplir la condition. Ce serait le travail comme :
Lorsque vous souhaitez mettre fin à
observable
, vous neend$.onNext("anything you want here");
. C'est dans le cas de la fin de l'événement est généré par vous. Si c'est une autre source de production de ce cas (keypress, etc.) ensuite, vous pouvez directement mettre un observables dérivés à partir de cette source comme un argument detakeUntil
.Documentation:
?? Je ne vous suis pas. Qu'est-ce que "ceci"? Dans tous les cas, la
onCompleted
gestionnaire sera déclenché pour tous les observateurs, qu'est-ce que vous avez demandé. À propos des fuites de mémoire, lors de la dernière observateur a désabonné de la observables créé parfromEvent
, l'écouteur d'événement qui a été créé est supprimé."ce qui va déclencher onComplete événement pour tous les abonnés Observateurs" est la deuxième partie de ma question. Ce dont j'ai besoin pour atteindre consiste à retirer l'écouteur d'événement. L'achèvement complet d'Observables, donc je peux supprimer toutes les références obsolètes quand je n'écoute pas d'événement plus.
C'est exactement ce qui doit arriver. Essayez le code et voir si elle fonctionne.
Est-ce toujours une solution appropriée à ce problème? J'essaie de trouver un moyen de créer une annuler le jeton d'annuler plusieurs observables sur "annuler" de la méthode d'évocation.
OriginalL'auteur user3743222
Ce qui a fonctionné pour moi, c'est à l'aide de la prendre() de l'opérateur. Il fera feu de l'complet de rappel après x nombre d'événements. Donc, en passant à 1, elle complète après le premier événement.
Tapuscrit:
first()
peut être utilisé à la place detake(1)
OriginalL'auteur Tomas Klingen
Je pense que ce que vous cherchez est la
dispose()
méthode.à partir de: https://github.com/Reactive-Extensions/RxJS/blob/master/doc/gettingstarted/creating.md#cold-vs-hot-observables
OriginalL'auteur Aiko Mastboom