立即取消订阅RxJS可观察对象

26

有人能告诉我如何立即取消Angular 2RxJS 订阅吗?可观察对象来自 EventEmitter。当接收到事件时,我想要取消订阅。问题在于需要在函数块内取消订阅。我感觉这样做是错误的。

this.subscription = observable.subscribe(result => {
    // do something
    // **unsubscribe**
});

可能是如何在Angular 2中取消订阅EventEmitter?的重复问题。 - jmachnik
1
take(1)似乎比first()更好的选项 - Ngoc Nam Nguyen
1个回答

57
observable.first().subscribe(....)

第一个事件发生后,订阅将会结束。

RxJs 6+更新:

observable.pipe(first()).subscribe(....)

2
这正是我在寻找的方法。谢谢。 - user1145347
6
还有其他类似的操作符,比如.take(1).skip(5).take(1),可以只获取第六个事件。 - Günter Zöchbauer
1
@GünterZöchbauer,我正在学习Observables并尝试理解它的逻辑。你说的很有道理。但是我认为我可以取5个值,对它们进行一些操作,然后在将来获得新的更新/新的值。 - Wesley Gonçalves
1
我明白了。不,这不是它的工作方式。您需要在“subscribe”或您使用的任何方法中自己计数以处理事件并跳过使用“if(...)”如果它是您不关心的位置。 - Günter Zöchbauer
明白了。谢谢 @GünterZöchbauer - Wesley Gonçalves
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接