角度缓冲区事件,然后在不活动延迟后执行某些操作



我一直在寻找一种角度样式的方式来实现以下内容。

在某个时候,事件将开始发送垃圾邮件。我想捕获所有这些呼叫,并且在它停止垃圾邮件(由某个时间间隔定义,例如 1 秒没有呼叫(后,我想收到通知并调用一个函数。我对事件的结果不感兴趣,只对没有发生例如 1s 的通知感兴趣。

如果它再次开始发送垃圾邮件,则该过程应重新开始。

我已经研究了缓冲区的可观察量,但没有发现任何适合这种情况的东西,大多数缓冲区事件直到满足条件(达到时序,变量集(。

我知道我可以通过在每次事件发生时重置计时器并在计时器达到我感兴趣的间隔时抛出事件来实现这一点。

我有一种感觉,使用rxjs/angular会有一种更优雅的方式来实现这一目标,我没有看到。

您可以使用垃圾事件来重置主题

export class Q52775767Component {
private resetSubject$ = new Subject();
constructor() {
// first event spammer
timer(0, 1000)
.pipe(take(10))
.subscribe(next => {
console.log('event spammer ' + next);
this.resetSubject$.next(void 0);
});
// second event spammer starts after 15 seconds
timer(15000, 1000).subscribe(next => {
console.log('event spammer 2 ' + next);
this.resetSubject$.next(void 0);
});
// This subject emits if no "spam" was received
this.resetSubject$
.pipe(
switchMap(() => timer(2000, 1000)) // wait for a two seconds "hole" then emit each second
)
.subscribe(() => this.targetFunction());
}
targetFunction() {
console.log('Target reached');
}
}

相关内容

  • 没有找到相关文章

最新更新