из сервиса не рекомендуется тянуть Observable, который продьюсит данные, напрямую, а использовать промежуточный BehaviorSubject и в компоненты отдавать уже данные через behaviorSubject.asObservable()
Во всех ли случаях это необходимо?
не во всех, но такая практика часто встречается когда нужно манипуляции с данными на уровне сервиса проводить то есть в сервисе есть какая-то логика для этих данных, например нам пришел массив с сервера и мы хотим в него что-то добавить уже после получения данных
А как в таком случае обойтись без subscribe?
в каком месте? и почему именно обойтись
Ну как бытует мнение "subscribe это не кошерно"
В любом. Использовать только async.
а что если мне данные внутри компонента нужны или внутри сервиса, а не внутри шаблона?)
Так все с пеной у рта доказывают что "что-то у вас не так с data flow")
если я в pipe закину take(1)/takeUntil/etc у меня не будет проблем с памятью
Да redux like и иже с ними.
Ну тоесть "можешь подписываться в любом месте". Верно я вас понимаю?
если можно использовать async то лучше использовать его, но иногда нужен subscribe вне шаблона, и это нормально.
И ДАЖЕ (omg) в сервисе?)
я стараюсь делать так чтобы в сервисе вся логика была внутри pipe и дергаю subscribe уже в компоненте или другом месте пока проблем не вызывало но тяжело держать в голове пожалуй всю логику которая может произойти после subscribe
Закрепите это пожалуйста в шапке чата)
был случай когда сервис подписывался на dom событие (https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsText) и subscribe вызывался в нем же
Это был сарказм с моей стороны. Я тоже подписываюсь там где удобно (если async не очень вписывается). Спасибо за ваш развернутый ответ.
да я понимаю что сарказм, просто хотелось привести пример когда подписка в сервисе была уместна и как можно с этим жить
Обсуждают сегодня