Как стать автором
Обновить

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

Хоть примеры кода приложили бы, толку то от консольного вывода

Как по мне, по возможности лучше вообще избегать subscribe() и компоновать все Observable через pipe. Если все же придется обмазываться ручными подписками — использовать @ngneat/until-destroy
Обилие способов отписаться и отсутствие единого способа это сделать — один из множества минусов RxJS для управления состоянием. Сначала проблему создали, потом её решаем костылями. Идиоматичный RxJS это автоматический subscribe и автоматические отписки. Ручные подписки — это неправильное использование RxJS, которое, увы, встречается повсеместно.
я пошел другим путем, путем написания собственного велосипеда
добавил метод расширение для Observable аля safeSubscribe(this, () => {}) и в качестве первого параметра принимаю ссылку на компонент наследующий DisposableСomponent и таким образом при уничтожении компонента могу принудительно произвести отписку от для всех подписчиков

Считаю верными 1, 3 и 4 способ
1 — когда есть единственная подписка
3 — async pipe весьма спецефичен. Довольно редко получается его использовать в проде, так как логика внутри компонента в большинстве случаев завязана на получаемые значения из подписки. Но если в компоненте подписка влияет только на шаблон, то это идеальный вариант
4 — самый универсальный способ, постоянно его тспользую и уже на автомате добавляю в компоненты свойства private unsubscribe$: Subject = new Subject(); и имплементируюсь от OnDestroy

2 способ жизнеспособен, но takeUntil мне как-то ближе


5 и 6 — тянуть дополнительные библиотеки ради отписок? Серьезно?

Если это статья про библиотеки для отписки, то нужно составить сводную таблицу, написать ±, размер бандлов. (целую библиотеку использовать для этого, слишком дорого выглядит, можно написать свой декоратор)

Если статья про отписки, то можно привести статистику по проектам или прикрутить опрос.

Считаю верным подход async pipe, если не удается, то takeUntil с this.onDestroy$, в который эмитим при уничтожении компонента.

Кажется, уже вышла 1000 статей и докладов, но проще и очевидней способа чем takeUntil везде где нет async pipe не удалось найти
Зарегистрируйтесь на Хабре, чтобы оставить комментарий