Size: a a a

Angular - русскоговорящее сообщество

2021 May 03

MK

Maxim Koylo in Angular - русскоговорящее сообщество
вот я и хочу узнать как вы это делаете, где именно вы делаете эту одну подписку
источник

AT

Arsen Tamazyan in Angular - русскоговорящее сообщество
внутри компонентов, которые показывают данные, лежит только вызов функий из сервисов, где и присутствует подписка на какие-то http observable зачастую

а http observable самоотписывающийся, там не нужна отписка
источник

AT

Arsen Tamazyan in Angular - русскоговорящее сообщество
если нет варианта убрать подписку из компонента, вынесите subject в свойство класса, а дальше прокидывайте значение через .next и где-то подписывайтесь
источник

MK

Maxim Koylo in Angular - русскоговорящее сообщество
я искал способ как избеать этого, как то не красиво
источник

AI

Artsiom Ivanov in Angular - русскоговорящее сообщество
как написали выше shareReplay
у вас cold observable, а хотите hot observable
источник

MK

Maxim Koylo in Angular - русскоговорящее сообщество
это же не уберет кучу подписок
источник

AI

Artsiom Ivanov in Angular - русскоговорящее сообщество
если будет активна 1на подписка и появится еще 1на, то будет переиспользован старый стрим, а не создастся новый
источник

AK

Alex Kulagin 🏡 in Angular - русскоговорящее сообщество
Откуда этот бред про то, что он самоотписывающийся? Это ж не правда
источник

AT

Arsen Tamazyan in Angular - русскоговорящее сообщество
от него не нужно отписываться, судя по официальной документации

после того, как придет значение, отписывается автоматически
источник

AK

Alex Kulagin 🏡 in Angular - русскоговорящее сообщество
Где написано, что отписывается автоматически?
источник

AI

Artsiom Ivanov in Angular - русскоговорящее сообщество
образно там takeFirst() (next + complete)
отписываться надо, значение хз когда придет
источник

AK

Alex Kulagin 🏡 in Angular - русскоговорящее сообщество
Next + complete это даже близко не отписка
источник

BB

Bogdan Bida in Angular - русскоговорящее сообщество
Он не отписывается но автокомплитится, это значит что после смерти компонента он не будет жрать память, но остается проблема что если компонент задестроить до ответа от сервера, то колбэк выполняться, а это может нести побочки
источник

AT

Arsen Tamazyan in Angular - русскоговорящее сообщество
согласен, там complete обычный после получения значения, но вряд ли это грозит чем-то страшным

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

AK

Alex Kulagin 🏡 in Angular - русскоговорящее сообщество
На самом деле все очень страшно. Потому что вы думаете, что HttpClient.request детает только запрос, а на самом деле он его заворачивает в интерцепторы
источник

AK

Alex Kulagin 🏡 in Angular - русскоговорящее сообщество
источник

AK

Alex Kulagin 🏡 in Angular - русскоговорящее сообщество
источник

AT

Arsen Tamazyan in Angular - русскоговорящее сообщество
а если пользователь отправил форму на сохранение и перешел на другую страницу.
пусть форма сохраняется спокойно, а не сбрасывается запрос во время takeUntil(destroy$)
источник

MK

Maxim Koylo in Angular - русскоговорящее сообщество
источник

AK

Alex Kulagin 🏡 in Angular - русскоговорящее сообщество
Не надо путать теплое с мягким. Тут речь о том как раз, что нудно специально сделать, чтобы подписка дожила свой срок. Это не значит что от нее никогда не надо отписываться
источник