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)),
   // ...
)