捕获并返回Rxjs时可观察到的抛出错误

时间:2019-03-01 16:44:33

标签: angular rxjs angular6 ngrx

嗨,我收到此错误:“从您的效果调用此http请求时,您提供了一个无效对象,该对象应在预期的流中。您可以提供一个Observable,Promise,Array或Iterable”。

deleteAccount(accountId: string): Observable<any> {
    return this.http.delete(FUNDING_ACCOUNT_DELETE_URL
      .replace(ACCOUNT_ID, accountId)).pipe(
        timeout(2000),
        catchError(err => { 
          return err; })
      );
  }

@Effect()
  paymentOptionRemove = this.actions
    .ofType(ActionTypes.PAYMENT_OPTION_REMOVE).pipe(
      switchMap((action: PaymentOptionRemoveAction) =>
        this.service.deleteAccount(action.payload).pipe(
          map(
            _ => new PaymentOptionRemovedAction()),
          // tslint:disable-next-line:arrow-return-shorthand
          catchError(err => {
            if (err) {
              console.log(err);
            }
            return of(new PaymentOptionRemoveErrorAction());
          })
        ))
    );

1 个答案:

答案 0 :(得分:1)

应该从deleteAccount函数返回一个Observable。在catchError块中,您尝试返回err,这是不可观察的。

使用throwError中的rxjs

throwError是rxjs的一个函数,它创建一个Observable,仅向订阅者发出错误。专为您的用例而设计。

import { throwError } from 'rxjs';

在删除功能中,使用类似

return throwError(err);