Size: a a a

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

2021 April 01

GP

Grzegorz `gzhegow` P... in ReactiveX - русскоговорящее сообщество
господа а какие преимущества недостатки у следующих двух записей в отличии друг от друга?

interval(10000).pipe(shareReplay(1), refCount())
interval(10000).subscribe(new ReplaySubject(1));
источник

GP

Grzegorz `gzhegow` P... in ReactiveX - русскоговорящее сообщество
первая возвращает вечный обсервабл, вторая возвращает подписку
источник

GP

Grzegorz `gzhegow` P... in ReactiveX - русскоговорящее сообщество
дам-с, много у вас в сообществе тех, кто понимает как оно работает...
источник

ЕВ

Евгений Войтенко... in ReactiveX - русскоговорящее сообщество
я не спец, а что вы в итоге хотите получить?
источник

GP

Grzegorz `gzhegow` P... in ReactiveX - русскоговорящее сообщество
мне привели в пример одну важную проблему которая наверняка должна возникать у всех кто делает даже не очень сложные проги
источник

GP

Grzegorz `gzhegow` P... in ReactiveX - русскоговорящее сообщество
есть продукты. есть корзина, куда они могут попасть. если удаляется продукт - он должен удалится из корзины по цепочке. добавляем сюда апи запрос этих продуктов и то, что мы не знаем как лучше всего запрашивать с сервака данные - в конструкторе сервиса, периодически, и может быть при изменениях продуктов.

и получается небольшая такая кашка из того какой подход выбрать
источник

GP

Grzegorz `gzhegow` P... in ReactiveX - русскоговорящее сообщество
с одной стороны хочется выбрать сабжект. или по-человечьи "приемник" данных. где будет локальный стейт, и куда можно из любого места данные воткнуть, обновив его и тем самым заставив апишку сделать новый запрос
источник

GP

Grzegorz `gzhegow` P... in ReactiveX - русскоговорящее сообщество
но
а) держать локальный стейт всех имеющихся продуктов = расход памяти
б) держать всех подписчиков - снова расход памяти
в) когда отписывать подписчиков и когда подписывать обратно
источник

GP

Grzegorz `gzhegow` P... in ReactiveX - русскоговорящее сообщество
или я в переменную products$ сохраняю обсервабл, который будет открываться когда я подпишусь. но тогда вопрос - как сделать его кешируемым ровно до того момента, как мне захочется кеш этот обнулить. ведь shareReplay() сделает его закешированным навечно, а все условия его обновления на будущее предусмотреть сложно. думаю всё равно про управляющий сабжект, в который next() передается стейт, что по факту тот же сабжект с самими продуктами
источник

GP

Grzegorz `gzhegow` P... in ReactiveX - русскоговорящее сообщество
или все таки наиболее центральный из этого путь это сделать управляющий сабжект куда присылается ('add', product), ('delete', product) и так далее, а сами продукты хранить в обычном свойстве сервиса и выводить в верстке из обычного свойства без асинков и прочего
источник

ЕВ

Евгений Войтенко... in ReactiveX - русскоговорящее сообщество
я не понимаю проблемы. если вы про веб, то для решения подобных проблем уже  давно придумали redux. и библиотеки реализующие его. например для ангуляра это стейт менеджеры ngrx, ngxs ищи реализации стейт менеджеров для своей платформы, или пишите их аналог, по паттерну redux.
источник

GP

Grzegorz `gzhegow` P... in ReactiveX - русскоговорящее сообщество
да, сейчас я в ангуляр подключу редукс и начну писать редюсеры
источник

GP

Grzegorz `gzhegow` P... in ReactiveX - русскоговорящее сообщество
и будут у меня промизы обсерваблы и еще редюсеры
источник

GP

Grzegorz `gzhegow` P... in ReactiveX - русскоговорящее сообщество
задача стейт менеджера оборачивать переменную в геттер и сеттер которые в верстке, в остальном обычная переменная тоже доступна глобально
источник

GP

Grzegorz `gzhegow` P... in ReactiveX - русскоговорящее сообщество
у меня главный вопрос не в том куда сохранить, а в том когда и как зашить итоговый код...
если штука отвечающая за продукты, то она должна менять стор а остальные на него подписаны. для чего в rxjs есть субьекты куда это можно положить
источник

GP

Grzegorz `gzhegow` P... in ReactiveX - русскоговорящее сообщество
только вот изобилие этих субьектов ликвидирует преимущества. все переменные теперь субьекты обсерваблы и ломают мозг просто от того что их все прочитал. что делают зачем не ясно никому кроме дева
источник

ЕВ

Евгений Войтенко... in ReactiveX - русскоговорящее сообщество
в ангуляре нет промисов, только rxjs
источник

ЕВ

Евгений Войтенко... in ReactiveX - русскоговорящее сообщество
развивайте код на умные и глупые компоненты.
источник

GP

Grzegorz `gzhegow` P... in ReactiveX - русскоговорящее сообщество
зачем умный компонент нужен если в ангуляре есть иньекция сервиса через конструктор. чем занимается умный?
источник

ЕВ

Евгений Войтенко... in ReactiveX - русскоговорящее сообщество
а вообще я вас не понял.) вы умными словами описываете простые проблемы. на мой взгляд.
источник