如何延迟重设Observable?

Nxt*_*xt3 3 rxjs angular

我试图弄清楚如何“重置”具有延迟的先前Observable。我的目标是,当我单击按钮时,它会执行一个操作;在该操作结束时,在等待定义的时间后,该操作将运行finalize以重置值。

这是我所要表达的意思。

如果我单击“保存新事件”,它将显示一个数字。3秒钟后,数字将消失。问题是,如果我单击一次,它将启动延迟-但是,如果在1秒后再次单击它,它将显示新的数字-但是2秒后,该数字将从第一个可观察到的集合消失{saveSuccess: null}

是否有一些RXJS魔术可以完成我想做的事情?

Dre*_*nai 6

是的,确实有一些魔术可以消除每次新点击的先前延迟(我想这就是您要追求的)

您需要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,但它本身是可观察的,而不是运算符