Проблема вызова функции JavaScript - PullRequest
0 голосов
/ 05 апреля 2019

Я не могу понять, почему вызов функции debounce в случае 2. Не работает, а в случае 1 ...

<input type="text" oninput="logText()" id="ti">

  1. Это работает:

var logText = debounce(getInputValue, 400)

Это не работает:

function logText() { debounce(getInputValue, 400) }

function getInputValue(e) {
  var inputT = document.getElementById('ti')
  var inputText = inputT.value
  console.log(inputText)
}

function debounce(func, wait, immediate) { /**/}

заранее спасибо!

1 Ответ

1 голос
/ 05 апреля 2019

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

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

Ваш второй вызывает функцию debounce и ничего не делает с возвращенной функцией. Так что эта функция никогда не выполняется. Его также не имеет смысла выполнять, так как вы будете создавать новый экземпляр функции debounce, который не будет соответствовать цели того, что вы пытаетесь решить. Это ничем не отличается от простого прямого вызова getInputValue. Или, в зависимости от того, что написано для debounce, задержка составит 400 мс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...