Ребят, подскажите как решить проблему. Мне нужно чтобы этот метод вызывался только через 2 секунды, и вызовы не ставились в очередь после каждого нажатого раза на ручку которая дергает запрос. Пытался сделать через setTimeout, но все равно запросы ставятся в очередь. Т.е. нужно чтобы после того как была нажата кнопка прошло время и вывелся результат, и если человек еще раз нажмет кнопку то, только через 2 секунды был бы следующий вызов, но запросы не ставились бы в очередь, а был всего один. Надеюсь я более менее объяснил. Я читал, что можно сделать через debounce, но не понимаю как мне тогда построить логику..
Я пробую вот так, но получаю ошибку. Не пойму как именно это сделать..
error Move function declaration to function body root no-inner-declarations
Вот метод который нужно обернуть в debounce с задержкой 2 секунды.
async getStatisctics_actions({ commit }) {
try {
const url = '/recStructs'
const options = {
params: {
currency: this.state.underlying,
maturity: this.state.maturity,
amount: this.state.amount,
fut_hedge_flag: this.state.futHedgeFlag
}
}
const response = await axios.get(url, options)
commit('setFullData_mutations', response.data.data) // Получаем все графики
} catch (error) {
return error
}
},
А вот что я пытался сделать и получил ошибку.
async getStatisctics_actions({ commit }) { // Получаем все графики
try {
const debounce = (fn, ms) => {
let timeout;
return function() {
const fnCall = () => { fn.apply(this, arguments)}
clearTimeout(timeout);
timeout = setTimeout(fnCall, ms)
};
}
async function chartDebounce() {
const url = "/recStructs";
const options = {
params: {
currency: this.state.underlying,
maturity: this.state.maturity,
amount: this.state.amount,
fut_hedge_flag: this.state.futHedgeFlag,
},
};
const response = await axios.get(url, options);
commit("setFullData_mutations", response.data.data);
}
}
catch (error) {
return error;
}
},