Size: a a a

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

2021 May 08

AV

Andrey Volkov in ReactiveX - русскоговорящее сообщество
После полной сборки и вызова пары методов через UI(ну точнее не методов, а диалогов, через которые получались данные), которые записывали в БД, после чего нельзя было зайти.
источник

A

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

AV

Andrey Volkov in ReactiveX - русскоговорящее сообщество
Есть вопрос. Я как-то смотрел логи в консоль при исполнении на разных потоках, у меня получалось так, что данные не успевались обрабатываться, не произойдёт ли здесь такого?. (хотя там наверное то, что первым шёл UI Thread повлияло, так как я там по итогу вызывал 3 диалога)
источник

A

Aleksandr in ReactiveX - русскоговорящее сообщество
Нужен более конкретный пример, но это частая проблема, что цепочка может не успевать обрабатывать данные/терять их
источник

AV

Andrey Volkov in ReactiveX - русскоговорящее сообщество
Понял, спасибо!
источник

AV

Andrey Volkov in ReactiveX - русскоговорящее сообщество
Печально как-то получается, что нормально дебагом пользоваться невозможно
источник

A

Aleksandr in ReactiveX - русскоговорящее сообщество
Там же как раз и делают кастомный request у подписки, чтобы контроллировать
источник

AV

Andrey Volkov in ReactiveX - русскоговорящее сообщество
Кастомный request это как я понимаю кастомный вариант генерации событий подписчикам?
источник

AV

Andrey Volkov in ReactiveX - русскоговорящее сообщество
И есть ещё вопрос, что можно почитать про методы в RxJava? (документация не пошла как и куча статьей (даже самая лёгкая для чтения от Badoo на Habr))
источник

A

Aleksandr in ReactiveX - русскоговорящее сообщество
Не совсем понял. Я скорее говорил про интерфейс
public interface Subscription {
     public void request(long n);
     public void cancel();
}

>When a Subscriber first connects to a Publisher, it is given a Subscription in the Subscriber#onSubscribe method. The Subscription is arguably the most important part of the whole specification: it enables backpressure. The Subscriber uses the Subscription#request method to request more data (from n to Long.MAX_VALUE) or the Subscription#cancel method to halt processing.
источник

A

Aleksandr in ReactiveX - русскоговорящее сообщество
Т.е при создании подписки вы можете ограничить входящий поток данных
источник

AV

Andrey Volkov in ReactiveX - русскоговорящее сообщество
А разве данный механизм не замедляет отправку данных от Flowable? (просто там была беда в том, что Flowable создаёт событие, после нажатия на иконку в UI (один раз), после чего в doOnNext() вызывался MaterialDialog и сразу же шло выполнение следующих doOnNext(), после чего у подписчика вызывался onNext() метод, при этом doOnNext(), который вызывался в первым(в UI потоке) не успевал выполнится, так как ждал данных от пользователя) Или данный метод может в какой-то момент в цепочке ограничить поток данных?
источник

A

Aleksandr in ReactiveX - русскоговорящее сообщество
Хм, ну тут уж специфика вашей бизнес логики. А так не уверен, что это ограничение замедляет, скорее уменьшает back pressure (давление на flowable). На счёт проблемы с ожиданием второго потока. Не скажу точно, но вам может помочь метод в духе await, либо делать ожидание самостоятельно. Просто идея то в том, что вы специально хотите расспаралелить это выполнение. Но я не до конца уловил ваш контекст, если честно
источник

AV

Andrey Volkov in ReactiveX - русскоговорящее сообщество
Ну я ту логику убрал, так как не получилось сократить код(да и в целом он был бессмысленный, я просто этого не сразу понял). Касаемо того холодный или горячий Flowable был, скорее горячий, так как данные были постоянно разные и в теории данных могло одномоментно прийти очень много (но такое маловероятно, так как пользователю давался сразу же диалог, на закрытие которого как раз требовалось время сопоставимое с записью в БД)
источник

A

Aleksandr in ReactiveX - русскоговорящее сообщество
Бессмысленный в каком плане?  
И тогда давайте уточню, а что такое employees в вашем случае?

Просто по тому коду, который представлен, вообще непонятно, о каких других действиях в другом потоке идёт речь.
источник

AV

Andrey Volkov in ReactiveX - русскоговорящее сообщество
А там в другом месте был код. Там постоянно по on Click передавалась view'шка и выполняласаь та самая логика. И тут employees это было временны не гейминг, сейчас это называется links (набор GitLinks' ов)
источник

A

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

AV

Andrey Volkov in ReactiveX - русскоговорящее сообщество
У меня есть фото(к сожалению на GitHub не залил и на то, чтобы найти фото и скинуть мне нужно минут 5-10) первой версии того кода, но там было без вызова MaterialDialog, но я помню где этот вызов(вызовы) был(-и).
источник

A

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

AV

Andrey Volkov in ReactiveX - русскоговорящее сообщество
Тут до вызова observeOn(Schedulers.io()) был вызовов doOnNext() внутри которого посстепенно открывались диалоги (после каждого нажатия на positive button у диалога
источник