Как запустить некоторый код в цепочке Rx JS, если ошибок не было - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь найти способ запустить какой-то код, только если в данной цепочке rx js не было ошибок. Рассмотрим следующее: есть ли что-то вроде искусственного оператора NO_ERROR_OCCURED_RUN_HAPPY_PATH_CODE в rx js?

private wrap(obs: Observable<any>): Observable<any> {
  return of(1).pipe(
    tap(() => this.spinner.startSpinner()),
    mergeMap(() =>
      obs.pipe(
        NO_ERROR_OCCURED_RUN_HAPPY_PATH_CODE(() => this.generic_success_popup()),
        catchError(this.handleError),            
      )
    ),
    finalize(() => this.spinner.stopSpinner())
  );
}

1 Ответ

0 голосов
/ 05 апреля 2020

Практически все операторы будут вызываться, если вдоль трубы не возникнет никакой ошибки, кроме finalize

  obs.pipe(
    tap(_=>console.log('no error, will run'),
    // throw some error
    map(_=>throwError('some error'),
    finalize(_=>console.log('will be called when there is error or upon observable complete')),
    tap(_=>console.log('this will not run')),
    catchError(this.handleError),           
  )
...