2016-11-08 8 views
0

Это, как я создаю мои наблюдаемый:Многие наблюдатели подключен к одному наблюдаемым получать события по одному

Observable.fromCallable(new EventObtainer()).flatMap(Observable::from).subscribeOn(Schedulers.io()).repeat(); 

И после этого, через запрос HTTP я пытаюсь добавить различные наблюдатели. Дело в том, что, если у меня есть более одного наблюдателя, я не могу предсказать, какой наблюдатель получит испущенный элемент. Почему не наблюдаемый элемент испускания каждому подписчиваемому наблюдателю, а один элемент в разное время для разных наблюдателей?

ответ

0

Я решил это,

В наблюдаемом контракте: http://reactivex.io/documentation/contract.html Существует информация:

Там нет общей гарантии, что два наблюдателя одного и того же Наблюдаемых будет видеть ту же последовательность элементов.

Так я разрешил его, сделав мой наблюдаемым Connectable наблюдению опубликовать, а затем вызвать на соединение метод на нем:

Observable.fromCallable(new EventObtainer()).flatMap(Observable::from).subscribeOn(Schedulers.io()).repeat().publish(); 
observable.connect(); 

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