【发布时间】:2021-06-11 10:32:19
【问题描述】:
我在NgRX效果中有个效果,如下:
$createOrganisation = createEffect(() =>
this.actions$.pipe(
ofType(fromOrganisationActions.createOrganisation),
switchMap((data) => this.organisation.createOrganisation(data)),
map((response) => fromOrganisationActions.createOrganisationSuccess({ orgId: response.id })),
catchError((error) => {
return of(fromOrganisationActions.createOrganisationError(error));
})
)
);
但是,当catchError 被触发时,我的流似乎永远不会结束,即在this.organisation.createOrganisation 的实例中返回 400 错误。
动作,fromOrganisationActions.createOrganisationError(error) 被触发,我的 reducer 也由此触发...但是如果我重新触发 fromOrganisationActions.createOrganisation 效果,这个效果会运行,但不会再次调用 API。
如果我按如下方式配置它,并手动调度它,它就可以工作:
$createOrganisation = createEffect(() =>
this.actions$.pipe(
ofType(fromOrganisationActions.createOrganisation),
switchMap((data) => this.organisation.createOrganisation(data)),
map((response) => fromOrganisationActions.createOrganisationSuccess({ orgId: response.id })),
catchError((error) => {
this.store.dispatch(fromOrganisationActions.createOrganisationError(error));
return throwError(error);
})
)
);
但是网上的其他例子表明第一种方法应该可行,但它不适合我,我不明白为什么我的流永远不会结束。
有人可以建议并告诉我为什么我的直播一开始就永远不会结束吗?
【问题讨论】:
标签: rxjs ngrx angular-httpclient ngrx-effects