Если вы не хотите использовать JQuery и не особенно обеспокоены обратной совместимостью, просто используйте
let element = document.getElementById(id);
element.dispatchEvent(new Event("change")); // or whatever the event type might be
. Здесь и см. документацию здесь. .
Почему мне нужно реализовать doOnError?
blockquote>У вас нет, а
doOnError
не является обработчиком ошибок, а заглядывает в канал ошибок. Вы должны реализовать обработчик ошибок вsubscribe
:.subscribe(result -> { // ... }, error -> { // ... });
. Как я могу достичь этого на определенных ошибках (например, 401). Я использую резервное наблюдение с некоторым временем отсрочки и после 5 раз
blockquote>Используйте
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); }) })
getMyObservable
. Я обновил ответ, чтобы использоватьdefer
в том случае, если сам вызов имеет побочные эффекты, не возвращаяObservable
для запуска. – akarnokd 13 July 2018 в 08:15Observable.<Long>error(...);
. – akarnokd 13 July 2018 в 12:48