ngrx - 使用错误处理进行链接效果:如果第一次api fetch成功,则从第二个api获取数据

问题描述 投票:1回答:1

我看到了一些SO答案,以及this中等帖子,但这些仍然无法解决我当前的问题。

场景:

  1. 添加产品。
  2. 如果成功,请获取所有产品的清单。

这两种情况中的每一种都可能有错误:

  1. 业务错误,包含特定于业务的错误消息
  2. 网络错误,40x错误代码等通用内容

目前,我具有使用服务添加产品的效果,并根据操作失败的成功发送动作。这将更新商店,并将currentProduct设置为添加的产品。

  @Effect()
  addProduct$: Observable<Action> = this.actions$.pipe(
    ofType(AddProductAction),
    map((action: AddProductAction) => action.payload),
    switchMap((ProductToAdd: Product) =>
      this.productService.addProduct(ProductToAdd).pipe(
        map(response => {
          if (this.responseContainsBusinessError(response)) {
            return new AddProductBusinessError(response);
          } else { // no business error
            return new AddProductSuccess(response);
          }
        }),
        catchError(err => of(new AddProductFail(err))) // network/http error etc
      )
    )
  );

有人可以请说明如何更改此代码,以便我可以添加第二个效果/ api调用从服务器获取产品列表?

angular error-handling ngrx chaining ngrx-effects
1个回答
3
投票

只需添加另一个将在AddProductSuccess上触发的@Effect。

@Effect()
  listAllProducts$: Observable<Action> = this.actions$.pipe(
    ofType(AddProductSuccess),
    ....
© www.soinside.com 2019 - 2024. All rights reserved.