在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 },
)
// ...
对于分派(dispatch)的任何操作,效果都会记录一条语句,然后用错误替换其内容。
这适用于 10 个操作。恰好分派(dispatch) 10 个操作后,第 11 个操作将不再导致 console.log
。事实上,不再执行任何效果,Redux Dev 工具也不会记录从那时起的任何操作。
我意识到,如果我预计会发生错误,我应该使用catchError
来优雅地处理它们。然而,让我担心的是,如果有一个错误我没有处理,它可能会在发生几次后破坏我的整个应用程序。
为什么会发生这种情况?有什么办法可以预防吗?
最佳答案
这是预期的行为。
我们发现这对于大多数项目来说是一个很好的起点。
您可以通过创建自己的错误处理程序并配置 Effects
来使用它来覆盖此行为。
有关详细信息和示例,请参阅 https://ngrx.io/guide/effects/lifecycle#customizing-the-effects-error-handler
关于typescript - 10 个错误后 NgRx 效果 "dies",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76899771/