假设有3个线程,T1,T2,T3。 如何让它们顺序运行,比如说执行顺序是T1,T2,T3,T1,T2,T3 ...... 我们可以使用RxJava来实现它吗?
有可能有3个线程并分别打印出T1,T2或T3,我们可以顺序打印出T1 T2 T3。
答案 0 :(得分:1)
您可以使用Observable.concat(request1, request2, request3)
,它将按顺序执行请求:
Observable<String> r1 = getObs().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread());
Observable<String> r2 = getObs().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread());
Observable<String> r3 = getObs().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread());
Observable<String> result = Observable.concat(r3, r2, r1);
或者,如果请求需要来自前一个请求的结果,请使用flatMap
:
request1()
.flatMap(d -> request2(d))
.flatMap(d -> request3(d))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe();