Нажатия кнопок вызывают функцию:
<button (click)="buttonClicked()"></button>
Сохранение нажатий кнопок как темы / наблюдаемой:
private buttonClick$: Subject<any> = new Subject();
Издает новое значение для каждого щелчка:
buttonClicked() {
this.buttonClick$.next();
// this.buttonClick$.emit(); // One of these is deprecated, can't remember which
}
Удушение нажатий кнопок "Получить":
getButtonClicks() {
return this.buttonClick$.pipe(
throttleTime(5000)
)
}
И затем вы можете сделать что-то вроде:
getButtonClicks().subscribe(() => {
// Do something with throttled button clicks
});
Чтобы сделать заметное из кликов, вы также можете использовать это вместо вашей темы:https://www.learnrxjs.io/operators/creation/fromevent.html
Редактировать:
Таким образом, вы хотите сохранить щелчки между регулировками.Вы можете сделать это следующим образом:
getButtonClicks() {
return this.buttonClick$.pipe(
buffer(this.buttonClick$.pipe(
debounceTime(5000)
))
)
}
И затем вы все равно вызываете свой BE API:
getButtonClicks().subscribe((clicks) => {
// Do something with debounced clicks
// console.log(clicks);
});