Выдать ошибку после таймаута в RxJS - PullRequest
0 голосов
/ 17 мая 2018

Я хочу выдать ошибку, если выполнение метода занимает больше времени, чем определенное время ожидания. Я пробовал это (ES6):

getExec() {
    return _getObs().timeout(5000, new Error("timeout reached")); //5s timeout
}

_getObs() {
    return rx.Observable.create((sub) => {
        sub.onNext(executeVerySlowMethod());
        sub.onCompleted();
    });
}

Когда я подписываюсь на getExec, это не вызывает никакой ошибки. Что я делаю неправильно? (executeVerySlowMethod - это очень медленный метод, который занимает более 5 секунд)

1 Ответ

0 голосов
/ 17 мая 2018

Нет доступных перегрузок .timeout(), что приводит к пользовательской ошибке.Это было удалено в RxJs5.Ваш код выдаст ошибку, поскольку ожидается, что второй аргумент будет иметь тип Scheduler|null.

Также;Создание наблюдаемой для переноса вашей функции может быть сделано проще, просто используя Observable.of(executeVerySlowMethod()), который менее подвержен ошибкам.

Observable
  .of(executeVerySlowMethod())
  .timeout(5000)

должен выполнить трюк, ЕСЛИ executeVerySlowMethod() блокирует // синхронизацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...