首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular NGRX @Effect捕捉所有动作

Angular NGRX @Effect捕捉所有动作
EN

Stack Overflow用户
提问于 2019-07-30 02:07:41
回答 2查看 648关注 0票数 2

我有一个角度应用程序,我想要一个副作用调用服务到第三方分析平台。我的想法是做

代码语言:javascript
复制
 Any action fires -> Side effect catches everything -> Service to call analytics

话虽如此,我显然不想在每个效果中都添加这个流程。我只希望在树的顶部有一个" catch - all“的副作用来捕获任何和所有的Ngrx操作,而不是调度一个操作,而只是调用服务。我在语法上有点问题...

代码语言:javascript
复制
@Injectable()
export class AmplitudeEffects {
  constructor(private actions$: Actions) {}

  @Effect()
  private *any action here* = this.actions$.pipe( <--what to put here
    ofType(), <-- leave empty to catch everything?
    mergeMap(() =>
      this.amplitudeService.sendValues(arg1, arg2, arg3, arg4).pipe(
        // catchError(error => of(new AmplitudeFailure(error)))
      )
    )
  );
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-30 02:49:21

这是一个很好的特效用例,我也用Start using ngrx/effects for this给出了这个例子。

为了回答您的问题,您可以省略ofType

代码语言:javascript
复制
  @Effect()
  log = this.actions$.pipe(
    mergeMap(() =>
      this.amplitudeService.sendValues(arg1, arg2, arg3, arg4).pipe(
        // catchError(error => of(new AmplitudeFailure(error)))
      )
    )
  );

我不确定您是否希望捕获错误,因为这只是为了记录日志,所以您可以这样做:

代码语言:javascript
复制
  @Effect({ dispatch: false })
  log = this.actions$.pipe(
    mergeMap(() =>
      this.amplitudeService.sendValues(arg1, arg2, arg3, arg4)
    )
  );
票数 1
EN

Stack Overflow用户

回答已采纳

发布于 2019-07-30 02:49:21

只需删除ofType,您的错误处理将终止可观察对象,因此ngrx将停止工作,因此我添加了正确的方法来处理catchError。我看起来应该是这样的,但是因为我不知道sendValues做了什么,所以我认为它会返回一个可观察对象。

代码语言:javascript
复制
  @Effect()
  name = this.actions$.pipe(
      this.amplitudeService.sendValues(arg1, arg2, arg3, arg4).pipe(
          map((x: any)=> x),
          catchError((error: any, effect: Observable<Action>) => {
            return effect.pipe(startWith(new new AmplitudeFailure(error)));
          }
      )
    )
  );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57259260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档