2016-11-28 36 views
2

ObserverがObservableを購読した後、そして購読を停止すると、いくつか特別な処置をしたいと思います。私はもちろんsubscribe()unsubscribe()メソッドを上書きすることができますが、それは酷いようです。 誰かがサブスクリプション/サブスクライブを解除するたびに呼び出されるコールバックを提供するためにobservableを作成する途中ではありませんか? BR、 ダニエルRxJSのsubscribe()とunsubscribe()のアクション

答えて

3

これはObservable.createの対象です。指定されたアタッチ/デタッチハンドラを使用して独自のオブザーバブルを作成することができます。さらに2行追加するだけで既存のオブザーバブルをラップすることもできます。

const obs = Rx.Observable.create(observer => { 
 
    console.log('attach'); 
 
    // If you want to wrap another observable, call this: 
 
    // const subs = other.subscribe(observer); 
 
    return() => { 
 
    // subs.unsubscribe(); 
 
    console.log('detach'); 
 
    }; 
 
}); 
 

 
console.log('subscribe subscription1'); 
 
const subscribtion1 = obs.subscribe(() => {}); 
 
console.log('subscribe subscription2'); 
 
const subscribtion2 = obs.subscribe(() => {}); 
 
setTimeout(() => { 
 
    console.log('subscribtion1.dispose()'); 
 
    subscribtion1.unsubscribe(); 
 
}, 500); 
 
setTimeout(() => { 
 
    console.log('subscribtion2.dispose()'); 
 
    subscribtion2.unsubscribe(); 
 
}, 1000);
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.0.0-rc.4/Rx.js"></script>

+0

私は、反応性のプログラミングにまだ間違いありませんよ。説明に感謝します。 – Daniel

関連する問題