Подтвердить что ты не робот

Функция Debounce с подчеркиванием args

У меня есть функция, которая принимает некоторые аргументы. Но использование подчеркивания подчеркивания:

var lazyLayout = _.debounce(calculateLayout, 300);

Но в моем случае calculateLayout нужны некоторые аргументы для запуска. Как я могу передать их в этом случае?

Обновление:

Пример calculateLayout:

var calculateLayout = function(a,b) {
  console.log('a is ' + a + ' and b is ' + b);
}
4b9b3361

Ответ 1

Вы должны иметь возможность просто использовать анонимную функцию в качестве первого аргумента, а затем вызывать в ней все что угодно:

_.debounce(function(){
    calculateLayout(20, 30);
}, 300);

Ответ 2

Вам не нужна анонимная функция посередине, аргументы автоматически передаются исходной функции при запуске debublable версии.

  var debounceCalculate = _.debounce(calculateLayout, 300);
  debounceCalculate(a,b);

В качестве преимущества вам не нужно жестко кодировать аргументы заранее

Вы можете попробовать, и если любопытно просто проверить источник

Ответ 3

@Джейми ответ лучше.

Я сохраню свой исходный ответ, как показано ниже, хотя лучше использовать ответ Джейми, если вы знакомы с JS:

var calculateLayout = function(a,b) {
  console.log('a is ' + a + ' and b is ' + b);
}

var debounceCalculate = _.debounce(function(a, b){
    calculateLayout(a, b);
}, 300);

debounceCalculate(1, 2);

Ответ 4

Как только никто не напишет один вкладыш без дополнительных var и function, я сделаю это сам:

_.debounce(calculateLayout, 300)(a, b);

Функция debounce возвращает другую функцию, поэтому вы можете вызвать ее сразу после того, как будет запущена функция debounce.