У меня есть два компонента Vue, у которых есть вызов «сохранить на диск» при каждом изменении данных, он загружается в эти компоненты через миксин, и каждый компонент сохраняется в другой файл, поэтому они должны функционировать независимо (только запускать сброс дребезга при собственное изменение данных). Чтобы предотвратить слишком много записи на диск. Вот моя функция отката:
function debounce(fn, delay) {
var timeoutID = null;
return function () {
console.log("clearing " + timeoutID)
clearTimeout(timeoutID);
var args = arguments;
var that = this;
timeoutID = setTimeout(() => fn.apply(that, args), delay);
};
}
Вот методы моего миксина, которые наследуют компоненты:
methods: {
saveData: debounce(function(){
console.log('saving widget: ' + this.$parent.widget.id);
this.saver.store = this.persisted;
}, 5000),
},
Это хорошо работает, когда я меняю данные в одном или другом компоненте, но когда я меняю данные в одном и до окончания устранения дребезга я изменяю другой, он отменяет мою функцию устранения дребезга из первого и сохраняет только данные второго компонента. .
Что мне здесь не хватает?
timeoutID
всегда выглядит нулевым. - person Gabriel Willemann   schedule 02.06.2020