什麼是訂閱?訂閱是一個對象,它表示一個處理完就釋放(disposable)的資源,是 Observable 的一個執行程式。訂閱有一個很重要的方法,`unsubscribe`,它是無參的,只是處理訂閱的資源。在上個版本的 RxJS,Subscription 又叫 “Disposable”。 ...
訂閱(Subscription)
什麼是訂閱?訂閱是一個對象,它表示一個處理完就釋放(disposable)的資源,是 Observable 的一個執行程式。訂閱有一個很重要的方法,unsubscribe
,它是無參的,只是處理訂閱的資源。在上個版本的 RxJS,Subscription 又叫 “Disposable”。
import { interval } from 'rxjs';
const observable = interval(1000);
const subscription = observable.subscribe(x => console.log(x));
// 然後:
// 這個取消通過觀察者訂閱正在開始執行的 Observable
subscription.unsubcribe();
一個訂閱實質上僅僅有一個
unsubscribe()
函數釋放資源或取消 Observable 的執行。
訂閱還是放在一起,以至於可以調用一個 unsubscribe()
函數釋放多個訂閱。你也可以通過 “adding” 把其中一個訂閱添加到其他的訂閱中:
import { interval } from 'rxjs';
const observable1 = interval(400);
const observable2 = interval(300);
cosnt subscription = observable1.subscribe(x => console.log('first: ' + x));
const childSubscription = observable2.subscribe(x => console.log('second: ' + x));
subscription.add(childSubscription);
setTimeout(() => {
//取消訂閱 subscription 以及 childSubscription
subscription.unsubscribe();
}, 1000);
當運行的時候,我們會看到如下結果:
second: 0
first: 0
second: 1
first: 1
second: 2
訂閱(Subscription)也有一個 remove(otherSubscription)
方法,是為了從它的子訂閱中移除。