在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 },
)
// ...
对于调度的任何操作,Effect都会记录一条语句,然后用错误替换其内容.
这适用于10个动作.在恰好调度了10个动作之后,第11个动作将不再导致console.log
个动作.事实上,根本不再执行任何效果,Redux Dev工具也不会记录从那时起的任何操作.
我意识到,如果我预计会发生错误,我应该使用catchError
来优雅地处理它们.然而,它让我担心,如果有一个我不能处理的错误,它可能会在发生几次后 destruct 我的整个应用程序.
这一切为什么要发生?有什么办法可以阻止它吗?