Как выполнить действие, если из наблюдаемого ничего не испускается через X секунд? - PullRequest
0 голосов
/ 03 октября 2019

Я подписался на наблюдаемую, но я только хочу, чтобы слушать ее, скажем 3 секунд. Если ничего не излучается через 3 секунды, я хочу, чтобы выполнить определенное действие. Я посмотрел на много мест, но не могу найти ответ.

1002 * Пример этого прослушивает веб-ответ в течение 3 секунд. Если ничего не будет получено через 3 секунды, я хочу, чтобы распечатать «тайм-аут» и т.д. 1004 * Как можно добиться этого в RxJava?

1 Ответ

0 голосов
/ 03 октября 2019

Вы пробовали оператор timeout ?

public static void main(String[] args) throws InterruptedException {
    requestToApi()
            .timeout(3, TimeUnit.SECONDS)
            .subscribe(
                    System.out::println,
                    error -> System.out.println("Timed out")
            );

    Thread.sleep(5000);
}

private static Observable<String> requestToApi() {
    // simulate a request to an API that will take 5 seconds to return a response
    return Observable.just("response").delay(5, TimeUnit.SECONDS);
}
...