Size: a a a

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

2021 May 20

И

Игорь in ReactiveX - русскоговорящее сообщество
Общаемся на темы, посвященные реактивному программированию.

+ Сообщество Android-разработчиков: @android_ru
+ Про Android Architecture: @Android_Architecture
+ Про Android NDK: @ndk_ru
+ Про React Native: @reactnative_ru
+ Вакансии: @mobile_jobs
источник

l

lenar in ReactiveX - русскоговорящее сообщество
причину то он тебе показывает - у тебя npe. откуда? возможно со строки 49. ошибки ты глушишь и не видишь что объект остаётся null
источник

v

vitaly in ReactiveX - русскоговорящее сообщество
Леди и джентльмены, всё сталкиваюсь и сталкиваюсь с одной и той же проблемой. Где-то в моём понимании самых главных вещей в RX что-то пошло принципиально неправильно и у меня постоянно возникает следующая ситуация:

Вот у меня есть источник данных. Пусть будет пуш в андройде. Я его эмичу из обзервабла. И мой кейс в том, что я хочу, чтобы источник данных "забыл" об заэмиченном айтеме в определённый момент. Я видел и использовал много решений и каждый раз это всё очень error-prone выходит. Пока что работает лучше всего прокидывание через BehaviorSubject энумчика с emptyState условным и обращению к нему не напрямую, а через метод, который это учитывает и в случае чего высылает Observable.empty()

Мой вопрос в том, как мне лучше обрабатывать ситуацию, где я хочу, чтобы заэмиченный айтем был "поглощаемым", т.е. после того, как я его условно "обработал" он пропадал из источника? Были лютые мысли сделать свой сабджект и свой субскрайб с блекджеком и шлюхами "поглощением" айтема после того, как отработал онНекст в подписчике, например.

Но мне кажется, опять-таки, что я как-то неправильно "реактивно" мыслю просто.
источник

S

Sergey S. in ReactiveX - русскоговорящее сообщество
private PublishSubject<Object> objectPublishSubject = PublishSubject.create();
Observable<Object> source = objectPublishSubject;

objectPublishSubject.onNext(object);

как-то так?
источник

v

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

v

vitaly in ReactiveX - русскоговорящее сообщество
По сути, я хочу "поломать" стандартный способ работы эрыкса и, раз это нельзя сделать из коробки, должна быть для этого причина.
источник

t

tonn in ReactiveX - русскоговорящее сообщество
может просто класть в бехейвиор undefined когда пуш обработан?
источник

t

tonn in ReactiveX - русскоговорящее сообщество
я так понял могут появится новые подписчики и они должны понять что значение было уже обработано?
источник

t

tonn in ReactiveX - русскоговорящее сообщество
или обернкть значение во враппер с явным полем IsProcessed
источник

v

vitaly in ReactiveX - русскоговорящее сообщество
Нууу, в идеале хотел бы иметь инструменты и на такой случай.
источник

S

Sergey S. in ReactiveX - русскоговорящее сообщество
http://reactivex.io/RxJava/javadoc/rx/observables/ConnectableObservable.html а вот это не подходит случаем?
источник

v

vitaly in ReactiveX - русскоговорящее сообщество
Для некоторых случаев да, думаю использовать
источник

v

vitaly in ReactiveX - русскоговорящее сообщество
Но вообще думаю попробовать всё же свой собственный тип и подписку, чтобы самый частый случай покрыть. Сделаю чёнить типа ConsumableSubject и метод consume ему, который будет как-бы "убирать" значение под капотом после того, как отработает онНекст в подписчике.
источник

v

vitaly in ReactiveX - русскоговорящее сообщество
Может, чё получится)
источник

S

Sergey S. in ReactiveX - русскоговорящее сообщество
я честно говоря не очень понял кейс с пушом. мб проще его отобразить и все?)
Мб посмотреть на архитектуру с другой стороны?
источник

A

Aleksandr in ReactiveX - русскоговорящее сообщество
А чем вам горячий observable не зашёл? Кажется издалека, что это как раз ваш случай.
источник
2021 May 26

v

vitaly in ReactiveX - русскоговорящее сообщество
почему в таком случае субскрайб не срабатывает?
источник

AI

Alexey Illarionov in ReactiveX - русскоговорящее сообщество
onComplete / onError - терминальные события
источник

v

vitaly in ReactiveX - русскоговорящее сообщество
Это я знаю, но это же behaviorSubject, он хранит значения, почему он их не отдаёт в случае комплита?
источник

v

vitaly in ReactiveX - русскоговорящее сообщество
а вот AsyncSubject отдаёт
источник