什么是 Rxjs 的 subscription
生活随笔
收集整理的這篇文章主要介紹了
什么是 Rxjs 的 subscription
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么是訂閱? Subscription 是一個對象,該對象代表一個一次性資源,通常是一個 Observable 的執(zhí)行。 Subscription 有一個重要的方法,unsubscribe,它不接受任何參數,只處理訂閱持有的資源。 在之前的 RxJS 版本中,訂閱被稱為“Disposable”。
看個例子:
import { interval } from 'rxjs';const observable = interval(1000); const subscription = observable.subscribe((x) => console.log(x)); // Later: // This cancels the ongoing Observable execution which // was started by calling subscribe with an Observer.console.log('ok');const handler = () => subscription.unsubscribe(); setTimeout( handler , 10000);這行代碼將在打印0~9 個數字后,也就是10秒后終止。
Subscription 本質上只有一個 unsubscribe() 函數來釋放資源或取消 Observable 執(zhí)行,避免內存泄漏。
也可以將一個 subscription 添加到另一個 subscription 里,然后同時關閉這兩個 subscription:
import { interval } from 'rxjs';const observable1 = interval(400); const observable2 = interval(300);const subscription = observable1.subscribe(x => console.log('first: ' + x)); const childSubscription = observable2.subscribe(x => console.log('second: ' + x));subscription.add(childSubscription);setTimeout(() => {// Unsubscribes BOTH subscription and childSubscriptionsubscription.unsubscribe(); }, 1000);在 SAP Spartacus 代碼里,有時我們能看到手動新建一個新的 subscription:
原因正在于此:
將若干個 subscription 添加到同一個 subscription:
這樣,在 Component 的 ngOnDestroy 方法里,我們就能用一個 subscription,通過調用一次 unsubscribe 就能關掉所有的子訂閱了。
更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的什么是 Rxjs 的 subscription的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: warframe内融核心有什么用(War
- 下一篇: mac book pro大写怎么切换(g