RxJava. Sequential execution

后端 未结 4 1333
旧巷少年郎
旧巷少年郎 2021-02-05 11:44

In my Android App I have a presenter which handles user interactions, contains kind of request manager and if needed sends user input over request manager to request manager.

4条回答
  •  生来不讨喜
    2021-02-05 12:05

    i suggest to create asynchronous observable methods , here a sample :

    public Observable sendRequest(int x){
        return Observable.defer(() -> {
            System.out.println("Sending Request : you get Here X ");
            return storeYourData(x);
        });
    }
    
    public Observable storeYourData(int x){
        return Observable.defer(() -> {
            System.out.println("X Stored : "+x);
            return readAnswers(x);
        }).doOnError(this::handlingStoreErrors);
    }
    
    public Observable readAnswers(int h){
        return Observable.just(h);
    }
    
    public void handlingStoreErrors(Throwable throwable){
            //Handle Your Exception.
    }
    

    the first observable will send request when he get response will proceed the second one and you can chain , you can customize each method to handle errors or success, this sample like queue.

    here the result for execution :

    for (int i = 0; i < 1000; i++) {
            rx.sendRequest(i).subscribe(integer -> System.out.println(integer));
    
    }
    Sending Request : you get Here X 
    X Stored : 0
    0
    Sending Request : you get Here X 
    X Stored : 1
    1
    Sending Request : you get Here X 
    X Stored : 2
    2
    Sending Request : you get Here X 
    X Stored : 3
    3
    .
    .
    .
    Sending Request : you get Here X 
    X Stored : 996
    996
    Sending Request : you get Here X 
    X Stored : 997
    997
    Sending Request : you get Here X 
    X Stored : 998
    998
    Sending Request : you get Here X 
    X Stored : 999
    999
    

提交回复
热议问题