2017-04-18 22 views
1

我一直在尋找一些代碼,發現這個:是否在值解決後自動清除訂閱?

this.busy = this.service.getInfo().subscribe((info: InfoData[]) => { 
      this.setInfo(info); 
     }); 

現在busy是用作輸入值[ngBusy]指令boolean類型的組件的屬性。顯然,subscribe()返回Subscription,它不爲空,因此投射到true。這觸發指令顯示模式加載彈出窗口,一旦解決信息就會消失。這意味着,那個this.busy在那一刻是錯誤的,我不得不意味着Subscription對象不再存在。

Inside getInfo()方法只有一行,即return Observable.of(info),其中info是存根變量。

所以我的問題是: 是否Subscription數據解決後自動刪除?如果是的話,是隻爲Observable.of()還是有這種行爲的任何其他例子?

+0

檢查這太問題它discusseds詳細介紹一下清理訂閱,http://stackoverflow.com/questions/38008334/angular2-rxjs-when-should-i-unsubscribe-from -subscription –

+0

在這種情況下是的 –

+0

某些訂閱會自動清除,例如那些與Http服務一起使用的訂閱和與Routing一起使用的訂閱。所有其他人需要取消訂閱。 – DeborahK

回答

4

數據解析後自動刪除訂閱嗎?

不,它不是。 - 訂閱對象仍然存在,這是由於JavaScript中的對象無法「自行刪除」。您還可以檢查下面的代碼,看看是否還有訂閱對象。它不再附加到流中,但它仍然存在。

我假設你正在使用angular2-busy - 如果是這種情況,那麼你應該仔細看看文檔 - [ngBusy]是能夠評估訂閱對象,並將停止顯示忙時間指示訂閱對象是已關閉


在代碼示例下面你可以看到,認購結束,它仍然會存在,但在非工作/關閉狀態 - angular2-busy能夠檢測到這一點。

相關問題