Ответ 1
Отказ от ответственности: я автор инструмента, о котором я упоминаю ниже.
Это может быть достигнуто путем сохранения списка, в который добавляются новые подписки, и удаления подписок из этого списка после его отмены.
Проблемной частью является наблюдение за подписками. Прямой способ добиться этого - сделать патч с помощью метода Observable#subscribe()
, то есть заменить метод-прототип Observable.
Это общий подход к Observable -profiler, инструменту разработки, который подключается к библиотеке Observable (т.е. rxjs) и печатает утечки подписок в консоли.
Простой способ использования профилировщика - начать отслеживание после загрузки приложения, а затем через некоторое время прекратить отслеживание:
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { Observable } from 'rxjs';
import { setup, track, printSubscribers } from 'observable-profiler';
setup(Observable);
platformBrowserDynamic([])
.bootstrapModule(AppModule)
.then(ref => {
track();
window.stopProfiler = () => {
ref.destroy();
const subscribers = track(false);
printSubscribers({
subscribers,
});
}
});
Просто вызовите stopProfiler()
в консоли devtools, как только вы захотите получить отчет.