Redux 延迟发射的可观测值取决于另一个可观测值
我正在使用Redux 延迟发射的可观测值取决于另一个可观测值,redux,rxjs,ngrx,Redux,Rxjs,Ngrx,我正在使用forkJoin等待4个观测值的完成。对于每个项目最后发出的值,我使用switchMap触发一些NgRx操作(ConfiguratorLoaded,GetProjectMembers,SwitchOrganization): 我有另一个可观察的加载的$,类型为可观察的,不在上面的代码示例中。 当loaded$的值为true而不是之前,如何才能触发3个NgRx动作?只要loaded$的值为false,就不应触发动作。所以这是一种停顿。如果我理解正确,您应该能够做到: combineLat
forkJoin
等待4个观测值的完成。对于每个项目最后发出的值,我使用switchMap
触发一些NgRx操作(ConfiguratorLoaded
,GetProjectMembers
,SwitchOrganization
):
我有另一个可观察的加载的$
,类型为可观察的
,不在上面的代码示例中。
当
loaded$
的值为true
而不是之前,如何才能触发3个NgRx动作?只要loaded$
的值为false
,就不应触发动作。所以这是一种停顿。如果我理解正确,您应该能够做到:
combineLatest([
this.loaded$,
this.projectsService.getProject(action.projectId),
this.flavors$,
this.images$,
this.storageDefinitions$
]).pipe(
filter(([loaded]) => Boolean(loaded)),
// ...
)
每当this.loaded$
流发出时,CombineTest将重新发出
如果this.loaded$
发出false,则过滤器将跳过处理开关映射
如果this.loaded$
发出true,则过滤器将继续并处理开关映射
然后,在执行NgRx操作之前,它会有效地“等待”直到此.loaded$
为真。loaded$.pipe(mergeMap(()=>forkJoin(…))
不,恐怕不能这样工作。我想要实现的是“暂停”触发switchMap()
中的操作,直到loaded$
获得值true
。
combineLatest([
this.loaded$,
this.projectsService.getProject(action.projectId),
this.flavors$,
this.images$,
this.storageDefinitions$
]).pipe(
filter(([loaded]) => Boolean(loaded)),
// ...
)