我试图弄清楚如何“重置”具有延迟的先前Observable。我的目标是,当我单击按钮时,它会执行一个操作;在该操作结束时,在等待定义的时间后,该操作将运行finalize以重置值。
如果我单击“保存新事件”,它将显示一个数字。3秒钟后,数字将消失。问题是,如果我单击一次,它将启动延迟-但是,如果在1秒后再次单击它,它将显示新的数字-但是2秒后,该数字将从第一个可观察到的集合消失{saveSuccess: null}。
是否有一些RXJS魔术可以完成我想做的事情?
是的,确实有一些魔术可以消除每次新点击的先前延迟(我想这就是您要追求的)
您需要Subject在班级使用a ,并next在每次单击时使用该主题。的subject应在建立constructor(或ngOnInit)如下,与所述tap内部运营商管
this.subject.pipe(
switchMap(value => {
return timer(1000).pipe(...)
}),
tap(...)
).subscribe()
Run Code Online (Sandbox Code Playgroud)
switchMap将在每次后续单击时取消上一个计时器
注意:timer使用整数值与的作用相同delay,但它本身是可观察的,而不是运算符
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |