Rxjs как узнать, сколько у observable подписчиков?

#javascript #node.js #angular #rxjs #observable

#javascript #node.js #angular #rxjs #observable

Вопрос:

Когда у меня есть несколько подписчиков на один observable, например:

 const myInterval = Rx.Observable.interval(500);

const subscriptionOne = myInterval.subscribe(val => doSomething());
const subscriptionTwo = myInterval.subscribe(val => doSomething());
  

Как я могу узнать, сколько подписчиков все еще регистрируется в myInterval observable? Мне нужна эта информация, например, для предотвращения утечек памяти в случае, если я забыл отписаться от одного из них?

Ответ №1:

При использовании angular 2 вы должны стараться использовать асинхронный канал как можно чаще, поскольку это автоматически отменит подписку для вас, когда ваш компонент будет уничтожен.

Это, как говорится. Ваш интервал, наблюдаемый здесь, является холодным наблюдаемым. Это означает, что для каждой подписки будет настроен производитель значений. Это означает, что каждый раз создается новая подписка. Итак, знание того, сколько подписок у вас все еще есть на холодный observable, — это вопрос, на который вы не можете ответить.

Боюсь, единственное, что вы можете сделать, это управлять своими подписками чистым способом и максимально полагаться на angular для этого.

Комментарии:

1. И, например, если я использую в своем компоненте значение Changes.subscribe в формах? Мне нужно отказаться от подписки вручную?