Sprawdzałem dokumentację RXJavy i zauważam, że operatorzy konkatencji i łączenia wydają się robić to samo. Napisałem kilka testów, aby mieć pewność.Concat VS Merge operaror
@Test
public void testContact() {
Observable.concat(Observable.just("Hello"),
Observable.just("reactive"),
Observable.just("world"))
.subscribe(System.out::println);
}
@Test
public void testMerge() {
Observable.merge(Observable.just("Hello"),
Observable.just("reactive"),
Observable.just("world"))
.subscribe(System.out::println);
}
Dokumentacja mówi
Operator Merge jest podobne. Łączy emisje dwóch lub więcej obserwowalnych, ale może je przeplatać, podczas gdy Concat nigdy nie przepuszcza emisji z wielu obserwowalnych.
Ale nadal nie do końca rozumiem, przeprowadzając ten test tysiąc razy wynik scalenia zawsze jest taki sam. Ponieważ zamówienie nie zostało przyznane, oczekiwałem czasami "reaktywnego" "świata" "cześć" na przykład.
Kod jest tutaj https://github.com/politrons/reactive
Wielkie dzięki za wyjaśnienie wyjaśnienie Thiis – paul
krótka notatka jest Merge że jeśli źródła są synchroniczne następnie następnie 'merge' =' concat' –
Dobra uwaga !, które wyjaśniają, dlaczego mój przykład zawsze idzie w tej samej kolejności. To była część, która mnie myliła. Na przykładzie Dave'a, ponieważ jest to interwał (asynchroniczny), jest odtwarzalny – paul