merge
| merge 将全部订阅
Observable,但是谁先完成谁先通知,如果大家完成时间一样,按顺序调用 |
public static void rxJava2() {
Observable.merge(makeRequest2("aaaa"), makeRequest("aaaaa")).subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Integer integer) {
LogUtils.e(integer);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
private static Observable<Integer> makeRequest(String query) {
return Observable.just(query)
.map(new Function<String, Integer>() {
@Override
public Integer apply(String query) throws Exception {
return query.length();
}
});
}
private static Observable<Integer> makeRequest2(String query) {
return Observable.just(query)
.delay(200, TimeUnit.MILLISECONDS)
.map(new Function<String, Integer>() {
@Override
public Integer apply(String query) throws Exception {
return query.length();
}
});
}
| 上面的代码会先执行makeRequest,然后执行makeRequest2 |
concat
| concat会在第一个Observable调用onComplete后才能订阅下一个 Observable,(顺序调用) |
Observable.concat(makeRequest2("aaaa"), makeRequest("aaaaa")).subscribe(new Observer<Integer>() {}
| 上面的代码还是会先执行makeRequest2,然后执行makeRequest |