shareService in angular 2 - twice subscribe the next function

喜欢而已 提交于 2019-12-13 06:29:34

问题


I have a ShareService in angular 2,and in another component i subscribe that,and this is my code :

*******ShareService ***********************************
   private ShopItem$ = new Subject<any>();
ShopItem$_ = this.ShopItem$.asObservable();
public addToCart(item : any){

    this.ShopItem$.next(item);

}

*************in another component**********************

_shareService.ShopItem$_.subscribe((item) => {

        alert("hiii"); <====>this functions execute twice
        this.ADD_TO_CART(item);<====>this functions execute twice

 });

my problem is ADD_TO_CART() function execute twice!why?i dont want my cart function execute twice,how to fix this problem?? the ShareService dont have any problem i test it with an function and once execute.


回答1:


As discussed in the comments, this is probably due to multiple subscriptions. To verify it is not this, you can put just above your subscriptions, the following line:

console.log('pre subscribe, number of observers is: ', _shareService.ShopItem$_.source.observers.length);

Note this works on rxjs 4, in version 5 you might need a different syntax.

It should give you 0, if you get another value, you have an already active subscription.



来源:https://stackoverflow.com/questions/37654458/shareservice-in-angular-2-twice-subscribe-the-next-function

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!