Я хотел бы добавить debounce для аргумента внутри функции
У меня проблема, потому что Angular debounce работает только для каналов и наблюдаемых, поэтому вместо этого я использую lodash debounce.
всякий раз, когда обновляется таблица таблицы данных ясности, она вызывает функцию onRefreshTable и передает объект события, который имеет фильтр таблицы и состояние сортировки.
Поскольку refreshTable() будет вызывать API, что занимает больше времени, я хотел бы свести к минимуму вызов API.
Иногда обновление таблицы вызывается несколько раз с одним или другим аргументом. Если другой аргумент, последний вызов обновления таблицы будет содержать все необходимые аргументы для передачи в API.
В моей попытке в коде не было ошибок, но она все равно вызывает функцию несколько раз через 1 секунду с тем же аргументом,
import * as _ from lodash;
onRefreshTable(event: ClrDatagridStateInterface<any>) {
_.debounce((event) => {
this.refreshTable(event)
}, 1000);
}
refreshTable(event) {
// save state to the rxjs store
// call API which is expensive
}
Я думаю об использовании DifferentUntilChanged, однако в этом случае это не работает, так как аргумент внутри функции не наблюдается.
Может быть, мне следует использовать _.cloneDeep вместо того, чтобы сравнивать предыдущие аргументы с текущими аргументами?