2016-11-28 6 views
2

in RxJS Ich möchte etwas besonderes unternehmen, sobald ein Observer ein Observable abonniert und sich abmeldet. Ich kann natürlich die subscribe() und unsubscribe() Methoden überschreiben, aber das scheint Crud. Gibt es während der Erstellung des Observable nicht die Möglichkeit, Callbacks bereitzustellen, die aufgerufen werden, wenn jemand abonniert/abmeldet? BR, DanielAktion zu subscribe() und unsubscribe()

Antwort

3

Dies ist, was Observable.create ist für. Sie können Ihre eigene Observable mit bestimmten Attach/Detach-Handlern erstellen und vorhandene Observables sogar mit nur zwei zusätzlichen Codezeilen umschließen.

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

Ich bin auf jeden Fall noch nicht in reaktive Programmierung. Vielen Dank für die Erklärung. – Daniel