RxJava: объединенные наблюдаемые вызовы завершаются ложно

#java #rx-java

#java #rx-java

Вопрос:

У меня есть несколько наблюдаемых объектов, которые я объединяю из набора. По какой-то причине объединенный наблюдаемый вызывает onComplete, хотя отдельные наблюдаемые не являются.

Пример:

 Set<Observable<InputOutputEvent>> set = new HashSet<Observable<InputOutputEvent>>();
    for (Observable ob : obs) {
        ob.subscribe((e) -> {
        }, 
        (error) -> {
System.out.println("This does NOT happen.");
        }, 
        () -> {
            System.out.println("This does NOT happen.");
        });
        set.add(c.event());
    }

  Subscription s = Observable.merge(set).subscribe((e) -> {
            }, 
            (error) -> {
                System.out.println("This does NOT happen.");
            }, 
            () -> {
                System.out.println("This DOES happen.");
            });
  

Как это возможно? Разве наблюдаемое слияние не должно вызывать onComplete только тогда, когда все объединенные его вызвали?

Я также проверил наличие ошибок, но их нет.

Ответ №1:

Оставляя это в качестве предостережения для других:

Список set наблюдаемых был ПУСТ. В этом случае onComplete вызывался немедленно.