Отписаться от наблюдаемых таймеров, которые излучают только один раз, когда это необходимо? - PullRequest
0 голосов
/ 06 февраля 2020

В моей программе есть несколько экземпляров timer(1000).subscribe(), а также некоторые детали timer(1000, 1000).subscribe().

У меня возникли некоторые проблемы с утечкой памяти, и мне было интересно, можно ли их устранить, отписавшись от таймеров. Отмена подписки на повторяющиеся таймеры кажется прямой и необходимой, но я должен также отписаться от таймеров, которые излучают только один раз?

Вторая часть моего вопроса - есть ли лучший способ отписаться от испускаемого таймера, чем поместить его в переменную, например так:

const myTimer = timer(1000).subscribe(() => {
    myTimer.unsubscribe();
});

Спасибо!

1 Ответ

2 голосов
/ 06 февраля 2020

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

subs=new Subscription();
subs.add(timer(1000).subscribe())
subs.unsubscribe()
...