Ngrx 拆分器和延迟事件

Ngrx splitter & delaying an event

我是 Ngrx 和 rxjs 的新手,很抱歉提出这样一个基本问题。

我知道如何在效果 class 中制作 "splitter",例如:

@Effect() didSomething$: Observable<Action> = this.actions
    .ofType('doSomething')
    .flatMap(task => [
        { type: 'perform1', payload: task.payload },
        { type: 'perform2', payload: task.payload }
    ]);

我 运行 遇到的问题是:我希望延迟第二个任务的触发,比如说 2 秒。

我尝试用

替换第二个数组元素
Observable.of({ type: 'perform2', payload: task.payload }).delay(2000)

这可以理解地导致抱怨 Observable<Action> 不是 Action 类型。

我将如何完成这项工作?即,在一段时间后将第二个事件分派到 didSomething$ 流?

使用 merge 将两个动作可观察对象和 flatMap 可观察对象合并到动作流中:

@Effect()
didSomething$: Observable<Action> = this.actions
  .ofType('doSomething')
  .flatMap(task => Observable.merge(
    Observable.of({ type: 'perform1', payload: task.payload }),
    Observable.of({ type: 'perform2', payload: task.payload }).delay(2000)
  ));