Использовать случайное наблюдение x количество раз

Если вы не хотите использовать JQuery и не особенно обеспокоены обратной совместимостью, просто используйте

let element = document.getElementById(id);
element.dispatchEvent(new Event("change")); // or whatever the event type might be

. Здесь и см. документацию здесь. .

0
задан HexFlex 13 July 2018 в 07:17
поделиться

1 ответ

Почему мне нужно реализовать doOnError?

У вас нет, а doOnError не является обработчиком ошибок, а заглядывает в канал ошибок. Вы должны реализовать обработчик ошибок в subscribe:

.subscribe(result -> {
    // ...
},
error -> {
    // ...
});

. Как я могу достичь этого на определенных ошибках (например, 401). Я использую резервное наблюдение с некоторым временем отсрочки и после 5 раз

Используйте retryWhen:

Observable.defer(() -> getMyObservable(params))
.retryWhen(errors -> {
    AtomicInteger count = new AtomicInteger();
    return errors.flatMap(error -> {
       if (error.toString().contains("401")) {
           int c = count.incrementAndGet();
           if (c <= 5) {
               return Observable.timer(c, TimeUnit.SECONDS);
           }
           return Observable.error(new Exception("Failed after 5 retries"));
       }
       return Observable.error(error);
    })
})
1
ответ дан akarnokd 17 August 2018 в 13:28
поделиться
  • 1
    Но когда я использую retryWhen я не использую резервную Observable. – HexFlex 13 July 2018 в 08:02
  • 2
    Какова ваша резервная видимость? – akarnokd 13 July 2018 в 08:03
  • 3
    В исходном вопросе вы снова вызываете getMyObservable. Я обновил ответ, чтобы использовать defer в том случае, если сам вызов имеет побочные эффекты, не возвращая Observable для запуска. – akarnokd 13 July 2018 в 08:15
  • 4
    Это то, что я хочу. Но верните Observable.error (новое исключение («Не удалось после 5 попыток»)); не работает: «Observable & lt; Object & gt; не может быть преобразован в ObservableSource & lt ;? расширяет длинные & gt; – HexFlex 13 July 2018 в 12:44
  • 5
    Укажите аргумент типа: Observable.<Long>error(...);. – akarnokd 13 July 2018 в 12:48
Другие вопросы по тегам:

Похожие вопросы: