Учитывая следующий код:CombineLatest и холодный наблюдаемые
Observable<String> obs1 = Observable.just("1", "2", "3");
Observable<String> obs2 = Observable.just("a", "b");
Observable.combineLatest(obs1,
obs2,
(s1, s2) -> s1 + ":" + s2
).subscribe(System.out::println);
Я ожидал бы, чтобы напечатать что-то вроде следующего:
1:a
2:a
3:a
3:b
Но он печатает
3:a
3:b
Почему мой first Observable only, испускающий последний элемент? Активных подписок до combLatest нет, поэтому должно быть холодно. Как я могу убедиться, что все предметы из обоих наблюдаемых объединены вместе?
Ну на самом деле мой код работает, потому что мой источник разве синхронный, я наткнулся на это при попытке записи испытание для этого.
То, что я пытаюсь достичь, является следующим:
* запрос Mongodb, чтобы получить Observable с потоком существующих идентификаторов. * запрос AWS s3, чтобы получить Observable с потоком имен файлов * для каждого файла s3, проверьте, существует ли имя файла в mongo. Если нет, удалите файл из s3.
– grub@akarnokd: с вашей плоской матрицей 'obs2' будет подписаться только после того, как будет выбрано первое значение' obs1'. С 'combLatest' подписка последовательна. Есть ли способ подписывать 'obs2' сразу после подписки' obs1'? – dwursteisen