RxJS——訂閱(Subscription)


訂閱(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) 方法,是為了從它的子訂閱中移除。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM