Debounce принимает функцию в качестве аргумента и возвращает функцию (дебаунтированную версию исходной функции). Функции, которые делают это, называются «функциями высшего порядка». В первом примере функция не имеет имени и передается непосредственно в debounce, как только она создается. Во втором примере вы назвали функцию autosave
(что замечательно), но это не усложняет ее. Все, что вам нужно сделать, это вызвать debounce перед использованием вашей функции name . Поэтому, когда вы используете его на keyup
:
$('input').keyup(debounce(autoSave, 500))
Если вы хотите всегда отключать автосохранение, вы можете сохранить заблокированную функцию в переменной autoSave, чтобы после этого момента она всегда отклоняется. (Или вы можете использовать другое имя - на ваше усмотрение).
autoSave = debounce(autoSave, 500)
$('input').keyup(autoSave)
Переназначение декорированной функции исходному имени функции называется «украшением», а функция более высокого порядка называется декоратором. Некоторые языки предоставляют для этого специальный синтаксис, и javascript равно с учетом добавления еще одного :
@debounce(500)
function autoSave() { … }
Это будет делать то же самое, что и в предыдущем примере: вызовите debounce с autoSave
а затем назначьте его autoSave
. Однако, если вы хотите сделать это сегодня, вам нужно использовать babel или машинописный текст и нужные плагины.