Comment arrêter un intervalle Observable manuellement?
Je suis en train d'essayer de faire un de 20 secondes de la minuterie comme ceci:
this.timer = Observable.interval(1000).take(20).map((tick) => tick+1).subscribe((tick) => {
this.reverseTimer = 20-tick;
})
C'est bien, si je laisse le Observables atteindre 20 à chaque fois, mais parfois, je veux la fin de la minuterie tôt. Maintenant, je ne peux pas l'arrêt de la minuterie jusqu'à ce qu'il s'arrête au bout de 20 secondes.
Maintenant, je me cache derrière le minuteur à l'écran quand je le veux arrêter, mais j'en ai besoin pour être en mesure de redémarrer. Si j'essaie de redémarrer le compte à rebours avant les 20 secondes, reverseTimer
vacille entre la nouvelle minuterie et du old timer valeurs parce que je n'ai pas arrêté de le old timer.
J'ai essayé this.timer.unsubscribe()
mais je reçois le message d'erreur que unsubscribe
n'existe pas de minuterie.
takeUntil
de l'opérateur. - Il encore observable en tant que paramètre. github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/...OriginalL'auteur Yifan | 2016-08-29
Vous devez vous connecter pour publier un commentaire.
Vous devriez jeter un oeil à la Minuterie de l'opérateur. Vous pouvez créer une Observable qui émet un élément particulier après un certain délai. Vous pouvez facilement créer votre compte à rebours du système.
Dans cet exemple, je vais créer un minuteur, puis l'arrêter au bout de 5 secondes.
Vous pouvez voir la Travail plunkr
OriginalL'auteur Paul Boutes
Si
unsubscribe
n'existe pas sur le résultat que vous avez reçues de votre appel àsubscribe
, vous utilisez probablement RxJS 4. Dans ce cas, vous aurez reçu unIDisposable
instance et doit appelerdispose
à l'arrêt de la minuterie:OriginalL'auteur cartant