rxjs publishReplay с условным хранилищем

У меня есть горячая наблюдаемая, которая выдает сообщения. В настоящее время я использую publishReplay(1).refCount(), поэтому все подписчики получат последнее сообщение. Теперь сообщения, проходящие через, могут иметь поле, содержащее логическое значение, чтобы определить, следует ли его просто передать всем подписчикам, или его следует сохранить в воспроизведении, чтобы оно также было отправлено всем новым секриберам.

Кто-нибудь знает, как достичь этого варианта использования?


person sclausen    schedule 14.06.2018    source источник
comment
не совсем понимаю вариант использования, не могли бы вы объяснить больше   -  person Fan Cheung    schedule 15.06.2018
comment
Обновил описание. Я надеюсь, что это помогает.   -  person sclausen    schedule 15.06.2018
comment
так это дело в том, нужно ли его кешировать? интересный   -  person Fan Cheung    schedule 15.06.2018
comment
Да, точно. Вот чего я хочу добиться.   -  person sclausen    schedule 15.06.2018
comment
это не такая уж простая логика, потому что множественная подписка на горячее наблюдаемое всегда дает один и тот же результат. Необходимо переосмыслить, есть ли способ лучше   -  person Fan Cheung    schedule 15.06.2018
comment
Да, с publish и publishReplay все текущие подписчики получают тот же результат, НО с publishReplay (1) новые подписчики также получают последнее сообщение. Это поведение должно быть настроено в сообщении.   -  person sclausen    schedule 15.06.2018
comment
очень сложно определить новых или старых подписчиков, потому что потоки не завершаются. Думаю, вы можете подумать о настройке двух потоков и разделении подписчиков на группы.   -  person Fan Cheung    schedule 15.06.2018


Ответы (1)


Я реализовал свои собственные publishReplayConditionally и ConditionalReplaySubject. Они дополнительно принимают выражение в качестве параметра, чтобы решить, следует ли сохранять значение.

person sclausen    schedule 17.06.2018