2015-11-24 3 views
1

Я ожидал результата, как и после запуска моего образца кода.

ATEST
BTEST
CTest

, но на самом деле ничего не произошло.

, пожалуйста, дайте мне знать, что не так с моим кодом.RxJava withLatestFrom не работает

Subject<String, String> subject = PublishSubject.create(); 
    subject.onNext("test"); 

    Observable<String> observable = Observable.from(new String[] {"a", "b", "c"}).repeat(2); 
    observable.withLatestFrom(subject, (s1, s2) -> s1 + s2) 
      .subscribe(s -> System.out.println(s)); 

ответ

4

Во-первых, withLatestFrom сохраняет значения до тех пор, пока другое наблюдаемое не произведет свое первое значение. Это часто происходит, если основной источник синхронный и проносится до того, как другой может испустить.

Во-вторых, PublishSubject испускает подписчиков, но в вашем примере на линии subject.onNext() нет никого, кто мог бы наблюдать за значением и как таковой отбрасывался.

Вместо этого вы можете использовать BehaviorSubject, который помнит самое последнее значение, и withLatestFrom также сразу увидит его.

Смежные вопросы