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)
));
我是 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)
));