gpt4 book ai didi

angular - @ngrx/effect 中止 Angular 应用程序中的多个 REST 调用

转载 作者:行者123 更新时间:2023-12-02 15:53:19 26 4
gpt4 key购买 nike

我遇到以下问题:

在服务内部,我在 forEach 循环中触发相同的 ngrx 操作

 sensorCategories.forEach(category => {
if (category === 'power' || category === 'air-flow') {
this.store.dispatch(new fromEnergyManagementActions.FetchBigWidgetDataAction({ category: category }));
} else {
this.store.dispatch(new fromEnergyManagementActions.FetchSmallWidgetDataAction({ category: category }));
}
});
<小时/>

这将触发下一个副作用:

@Effect()
fetchSmallWidgetData: Observable<Action> = this.actions
.ofType(fromEnergyManagementActions.FETCH_SMALL_WIDGET_DATA)
.map(toPayload)
.switchMap(payload => this.dashboardDataService.fetchSmallWidgetData(payload))
.map((data: SmallWidgetData) => new fromEnergyManagementActions.FetchSmallWidgetDataSuccessAction(data))
.catch(error => of(new fromEnergyManagementActions.FetchSmallWidgetDataFailureAction()));
<小时/>

服务中的 fetchSmallWidgetData 方法将使用"new"HttpClient 执行其余调用。

以下是日志: Browser Logs

所以问题是,ngrx/effect 中止了之前的调用。我在中间设置了一个超时来测试它。当超时足够长时,一切都会成功。

你的建议是什么?有我可以使用的最佳实践吗?感谢您的帮助

最佳答案

发生这种情况是因为您使用 switchMap在你的效果中。切换至mergeMap允许维护多个内部订阅。

关于angular - @ngrx/effect 中止 Angular 应用程序中的多个 REST 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47528312/

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