Ответ 1
Вы должны иметь возможность просто использовать анонимную функцию в качестве первого аргумента, а затем вызывать в ней все что угодно:
_.debounce(function(){
calculateLayout(20, 30);
}, 300);
У меня есть функция, которая принимает некоторые аргументы. Но использование подчеркивания подчеркивания:
var lazyLayout = _.debounce(calculateLayout, 300);
Но в моем случае calculateLayout
нужны некоторые аргументы для запуска. Как я могу передать их в этом случае?
Обновление:
Пример calculateLayout
:
var calculateLayout = function(a,b) {
console.log('a is ' + a + ' and b is ' + b);
}
Вы должны иметь возможность просто использовать анонимную функцию в качестве первого аргумента, а затем вызывать в ней все что угодно:
_.debounce(function(){
calculateLayout(20, 30);
}, 300);
Вам не нужна анонимная функция посередине, аргументы автоматически передаются исходной функции при запуске debublable версии.
var debounceCalculate = _.debounce(calculateLayout, 300);
debounceCalculate(a,b);
В качестве преимущества вам не нужно жестко кодировать аргументы заранее
Вы можете попробовать, и если любопытно просто проверить источник
@Джейми ответ лучше.
Я сохраню свой исходный ответ, как показано ниже, хотя лучше использовать ответ Джейми, если вы знакомы с 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);
Как только никто не напишет один вкладыш без дополнительных var
и function
, я сделаю это сам:
_.debounce(calculateLayout, 300)(a, b);
Функция debounce возвращает другую функцию, поэтому вы можете вызвать ее сразу после того, как будет запущена функция debounce.