gpt4 book ai didi

angular - 为什么 action 第二次运行时不触发 Effect?

转载 作者:太空狗 更新时间:2023-10-29 17:43:36 25 4
gpt4 key购买 nike

Effect:

@Effect()
loadDocsEffect$ = this.actions$.pipe(
ofType(myActionTypes.LoadDocs),
mergeMap(action => this.myService.getDocs()),
map(data => new LoadDocsSuccess(data)),
catchError(error => Observable.of(new LoadDocsFailure(error)))
);

它在我返回数据时起作用,但当服务器响应错误时(例如 404),可观察对象已完成并且在我第二次分派(dispatch)操作时不会触发效果。我寻找一种方法来正确处理错误并继续观察流,以便我可以在我的组件中订阅它并采取相应的行动。

@ngrx Effect does not run the second time 中的解决方案对我不起作用,或者我无法让它发挥作用。

最佳答案

您需要根据请求catchError 而不是actions$。为此,您需要按以下方式修改代码:

mergeMap(action => 
this.myService.getDocs().pipe(
map(data => new LoadDocsSuccess(data)),
catchError(error => Observable.of(new LoadDocsFailure(error)))
)
)

关于angular - 为什么 action 第二次运行时不触发 Effect?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52683711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com