Vit*_*vzh 2 rxjs typescript ngrx angular
我正在尝试在ngrx效果中实现可配置的延迟。但是RxJS delay()
函数不能仅接收lambda作为参数number | Date
。我想做的是tap
将有效负载中的值存储到某个全局变量中,然后将其用作参数,delay()
但它不起作用。delay()
似乎是用旧的变量值调用的。这是供参考的代码段:
@Effect()
delayHideRx$ = this.actions$
.ofType(IconsActions.DELAY_HIDE_RX)
.pipe(
tap((action: Action) => { rxDelay = action.payload }),
delay(rxDelay),
map(() => {console.log('delay hide rx'); return IconsActions.hideRx(rxDelay)})
);
Run Code Online (Sandbox Code Playgroud)
基本上,我要实现的是某种setTimeout()
功能,但仅包含操作。
通常,任务听起来像这样:一旦收到来自服务器的推送,我们需要显示一些图标,并在一定时间后将其隐藏。时间量来自服务器。
我将不胜感激有关如何参数化delay()
输入参数的任何建议,以及有关在这种情况下为何延迟采用先前值的任何解释。
谢谢!
您可以使用mergeMap
运算符
myObs$.pipe(
mergeMap(payload => {
return of(payload)
.pipe(delay(payload.delay))
})
);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
615 次 |
最近记录: |