Size: a a a

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

2021 March 25

ДМ

Денис Макаров... in Angular - русскоговорящее сообщество
Денис Макаров
я бы это отдельной подпиской сделал, а общий код потока до этого места - вынес бы в отдельный Observable. Если вынести общий код, то можно избавиться и от лишего сабжекта с вызовом next(и подписка даже не понадобится)
например:
obs.pipe(
...operators,
tap(() => sub.next() )
)

--- better ----

const anotherObs = obs.pipe(
...operators
).shareReplay({ refcount: true })


и вот мы уже вместа сабжекта можем использовать anotherObs
источник

ЕВ

Евгений Войтенко... in Angular - русскоговорящее сообщество
Alex Inkin
По поводу RxJS, кстати, мы тут с коллегой мутим челлендж с ежедневными задачками в Твиттере:
https://twitter.com/hashtag/RxJSChallenge
Подключайтесь, если кому интересно.
лады, ща зарегаюсь там.
источник

AI

Alex Inkin in Angular - русскоговорящее сообщество
Евгений Войтенко
переключить с помощью switch map? Я рефакторю код старый. там ребята внутри map дёргают сабджект, моя задача научить их бест практис. я думаю дёргать его в  tap или subscribe. так лучше чем в map?
Попробуй решать через share и ветвление потоков, чтобы избежать сайдэффектов в виде next в соседний сабжект в тапах.
источник

AI

Alex Inkin in Angular - русскоговорящее сообщество
Как раз вчера в челлендже был пример на подобную схему:
https://medium.com/angularwave/rxjs-challenge-03-showing-error-message-for-a-period-of-time-15b428d49315
источник

ЕВ

Евгений Войтенко... in Angular - русскоговорящее сообщество
Денис Макаров
например:
obs.pipe(
...operators,
tap(() => sub.next() )
)

--- better ----

const anotherObs = obs.pipe(
...operators
).shareReplay({ refcount: true })


и вот мы уже вместа сабжекта можем использовать anotherObs
да, первый пример именно так и выглядит. а куда вставить сабджект после sharereplay?
источник

ДМ

Денис Макаров... in Angular - русскоговорящее сообщество
Евгений Войтенко
да, первый пример именно так и выглядит. а куда вставить сабджект после sharereplay?
а его уже не надо, его роль выполняет anotherObs
источник

ДМ

Денис Макаров... in Angular - русскоговорящее сообщество
тут ед нюанс, какой вид сабжекта планировался, от этого стоит выбор между sharereplay и  share, и нужен ли буфер и сколько
источник

ЕВ

Евгений Войтенко... in Angular - русскоговорящее сообщество
Денис Макаров
тут ед нюанс, какой вид сабжекта планировался, от этого стоит выбор между sharereplay и  share, и нужен ли буфер и сколько
там бихавиор.
источник

ДМ

Денис Макаров... in Angular - русскоговорящее сообщество
Евгений Войтенко
там бихавиор.
тогда еще размер буфера надо установить, и если важно какое-то изначальное значение для сабжекта, то добавить оператор startWith(initialValue)
источник

ЕВ

Евгений Войтенко... in Angular - русскоговорящее сообщество
Денис Макаров
тогда еще размер буфера надо установить, и если важно какое-то изначальное значение для сабжекта, то добавить оператор startWith(initialValue)
спасибо, буду экспериментировать. правильно я понимаю что когда мы в любом операторе стрима дергаем некст стороннего сабджекта или делаем  присваивание this.data =... - то это называется сайд эффект?
источник

ДМ

Денис Макаров... in Angular - русскоговорящее сообщество
по сути все тоже самое, что Алекс выше описал. Если видим, что какой-то сабжект зависит от потока - можно декомпозировать поток, вынести общую часть с помощью share/shareReplay, и использовать эту общую часть вместо сабжекта
источник

ДМ

Денис Макаров... in Angular - русскоговорящее сообщество
Евгений Войтенко
спасибо, буду экспериментировать. правильно я понимаю что когда мы в любом операторе стрима дергаем некст стороннего сабджекта или делаем  присваивание this.data =... - то это называется сайд эффект?
да
источник

ЕВ

Евгений Войтенко... in Angular - русскоговорящее сообщество
Денис Макаров
по сути все тоже самое, что Алекс выше описал. Если видим, что какой-то сабжект зависит от потока - можно декомпозировать поток, вынести общую часть с помощью share/shareReplay, и использовать эту общую часть вместо сабжекта
стало яснее, спасибо.
источник

ЕВ

Евгений Войтенко... in Angular - русскоговорящее сообщество
а если я делаю тоже самое внутри subscribe - это сайд эффект?
источник

ДМ

Денис Макаров... in Angular - русскоговорящее сообщество
Евгений Войтенко
стало яснее, спасибо.
это не проблема, если потоки не сложные. Но я сталкивался с 5 - 10 сабжами, которые миксуются в потоки, вот там начинаются проблемы, не понятно, кто, где и как вызвал next, какие данные при этом поменялись. Поэтому щас стараюсь все делать в потоках
источник

ДМ

Денис Макаров... in Angular - русскоговорящее сообщество
Евгений Войтенко
а если я делаю тоже самое внутри subscribe - это сайд эффект?
с точки зрения определения сайд-эффекта - это тоже сайдэффект) но более явный. Но я бы тоже не делал там вызов next у сабжектов
источник

AB

Alex Bu in Angular - русскоговорящее сообщество
Евгений Войтенко
переключить с помощью switch map? Я рефакторю код старый. там ребята внутри map дёргают сабджект, моя задача научить их бест практис. я думаю дёргать его в  tap или subscribe. так лучше чем в map?
Интересная однако у вас задача - учить бест практисам, которых вы не знаете 💁‍♂
Имхо, прежде чем учить других, сначала нужно самому приобрести качественные знания по теме. Ну или хотя бы мало-мальски опыт
источник

VM

Vadim Malovaniy in Angular - русскоговорящее сообщество
Alex Bu
Интересная однако у вас задача - учить бест практисам, которых вы не знаете 💁‍♂
Имхо, прежде чем учить других, сначала нужно самому приобрести качественные знания по теме. Ну или хотя бы мало-мальски опыт
там скорее имелось ввиду "научить код" а не человека
источник

AS

Anton Shvets in Angular - русскоговорящее сообщество
Денис Макаров
с точки зрения определения сайд-эффекта - это тоже сайдэффект) но более явный. Но я бы тоже не делал там вызов next у сабжектов
ну порой проще воткнуть сабжект, чем изголяться с разделением потоков :)
источник

AB

Alex Bu in Angular - русскоговорящее сообщество
Vadim Malovaniy
там скорее имелось ввиду "научить код" а не человека
Не, там вполне однозначно все. Вы пхже гиппертолерантный) по мне так там запрос в том, чтобы кто-нибудь объяснил, что тап лучше мап, чтобы он мог кого-нибудь заставить что-нибудь переделывать)
источник