NgRx 效果在 10 次错误后“消失”

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

在Angular项目中使用NgRx,我有以下效果:

let i = 0

@Injectable()
export class Effects {
    testEffect$ = createEffect(
        () =>
            this.actions$.pipe(
                tap(() => console.log("action number:", i += 1)),
                mergeMap(() => throwError(() => "")),
            ),
        { dispatch: false, useEffectsErrorHandler: true },
    )

    // ...

对于分派的任何操作,效果都会记录一条语句,然后用错误替换其内容。

这适用于 10 个动作。恰好发送了 10 个操作后,第 11 个操作将不再导致

console.log
。事实上,不再执行任何效果,Redux Dev 工具也不会记录从那时起的任何操作。

我意识到,如果我预计会发生错误,我应该使用

catchError
来优雅地处理它们。然而,让我担心的是,如果有一个错误我没有处理,它可能会在发生几次后破坏我的整个应用程序。

为什么会出现这种情况?有什么办法可以预防吗?

typescript error-handling rxjs ngrx ngrx-effects
1个回答
0
投票

这是预期的行为。

我们发现这对于大多数项目来说是一个很好的起点。

您可以通过创建自己的错误处理程序并配置

Effects
来使用它来覆盖此行为。

有关更多信息和示例,请参阅 https://ngrx.io/guide/effects/lifecycle#customizing-the-effects-error-handler

© www.soinside.com 2019 - 2024. All rights reserved.