Действие по подписке () и отписаться ()

В RxJS я хотел бы предпринять какие-то особые действия, когда наблюдатель подписывается на Observable и когда он отписывается. Я могу конечно переписать subscribe() а также unsubscribe() методы, но это кажется грубым. Нет ли способа при создании наблюдаемого предоставить обратные вызовы, которые вызываются, когда кто-то подписывается / отписывается? BR, Даниэль

1 ответ

Решение

Это то, что Observable.createдля. Вы можете создать свою собственную наблюдаемую с помощью указанных обработчиков присоединения / отсоединения и даже обернуть существующие наблюдаемые всего двумя дополнительными строками кода.

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>

Другие вопросы по тегам