AngularJs - RXJS Observable取消订阅

时间:2016-03-21 11:22:42

标签: angularjs rxjs

我已经设置了一个RXJS可观察对象。我有两个组件订阅服务工厂的主题。如何取消订阅所选组件到主题,以便按下按钮停止收听主题广播?

请参阅我的jsfiddle Unsubscribe App

我的代码:

Try

2 个答案:

答案 0 :(得分:14)

根据我上面的评论,新的RxJs 5 Beta现已从subscription.dispose()更改为subscription.unsubscribe()请参阅此处https://github.com/ReactiveX/rxjs/blob/master/MIGRATION.md#subscription-dispose-is-now-unsubscribe

答案 1 :(得分:7)

请参阅更新的小提琴:here

subscribe函数返回Disposable以供使用,您必须先从工厂返回订阅(第60行):

subscribe: function(subscription){
    return msgSubject.subscribe(subscription);
}

这将允许您将订阅存储在每个控制器中,以便将来使用。 (第21和42行)

var boxASubscription = boxA.msgService.subscribe(function(obj) {
    console.log('Listerner A');
    boxA.msg = obj;
});

您可以在取消订阅时调用订阅上的dispose方法:

boxA.unsubscribe = function(){
    console.log('Unsubscribe A');
    boxASubscription.dispose();
};

n.b。

出于某种原因,我无法让您的演示版与<md-button>一起使用,所以为了演示,我将其更改为<button>