Как я могу произвести излучение, если только другой поток уже отправил элемент, и он не используется в Rxjava? - PullRequest
1 голос
/ 16 октября 2019

Мой вопрос выглядит как простой, но, пожалуйста, см. Ниже.

stream alphabet : ----------------------(A)----------------------------(B)-----
stream number   : ---(1)-----(2)------------------(3)----(4)----(5)----------(6)----
emission        :    true    true                false   true   true         false    
  • испускать истину, если не было эмиссии элементов алфавита
  • испускать ложь, было эмиссии элементов алфавита, и этоеще не используется
  • emit true, если последний использованный элемент алфавита был использован

есть ли хороший оператор для этого ..?

1 Ответ

0 голосов
/ 16 октября 2019

Если Alphabet (steamA) является Hot Observable, я думаю, что этот хакерский код на основе принятия / пропуска может решить вашу проблему:

Observable.merge(streamA, Observable.just("init"))
  .switchMap(a -> {
    if ("init".equals(a)) return streamN.map(n -> true);
    return Observable.merge(
     streamN.take(1).map(n -> false),
     streamN.skip(1).map(n -> true)
   )
}
...