Считается ли ошибка выбросом от наблюдаемого в RxJ?

Быстрый вопрос: будет ли .do() срабатывать при возникновении ошибки? В документах говорится: «Выполнять побочный эффект для каждой эмиссии в исходном Observable, но возвращать Observable, который идентичен исходному». Ошибка тоже считается эмиссией?

return this.authHttp.get(url)
      .delay(5000)
      .map(this.extractData)
      .do(() => console.log("I'm doing something"))
      .share()
      .catch(error => {
        if (isDev) this.toastr.error("The panels could not be retrieved from the API.");
        return this.handleEerror(error);
      });

person wolfhoundjesse    schedule 17.11.2016    source источник
comment
Ну, теперь я чувствую себя глупо. Я не думал отключать API, чтобы вызвать ошибку, пока не опубликовал вопрос.   -  person wolfhoundjesse    schedule 17.11.2016


Ответы (2)


метод .do() может принимать необязательный обратный вызов onError для обработки ошибок:

observable
  .do(
    value => console.log("I'm doing something"),
    err   => console.error('I got an error', err.stack)
  )

... в противном случае он просто пройдет через конвейер.

person Jacob    schedule 17.11.2016
comment
Вы имеете в виду, что я должен читать сигнатуру функции, а не только комментарии? лол Спасибо за улучшение моего ответа! - person wolfhoundjesse; 17.11.2016

No.

На самом деле все в пайплайне пропускается до catch.

person wolfhoundjesse    schedule 17.11.2016