Как использовать RxJava для последовательной работы нескольких потоков

Предположим, что есть 3 потока, T1, T2, T3. Как я могу заставить их работать последовательно, скажем, порядок выполнения - T1, T2, T3, T1, T2, T3... Можем ли мы использовать RxJava для его реализации?

Возможно ли, что есть 3 нити и отдельно распечатать T1, T2 или T3, и мы можем распечатать T1 T2 T3 последовательно.

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();
Другие вопросы по тегам