Я пытаюсь установить задержку в передний звонка AJAX.
var delay = 2000;
$("#c_name").on("keyup", function() {
var entered = $(this).val();
if (entered.length > 1) {
setTimeout(dosearch(entered), delay)
}
});
По какой-то причине я не могу заставить setTimeout ухватиться. Он мгновенно выполняет функцию dosearch().
Как я могу заставить это задержать правильно? Да JQuery 3.3.1 загружается сверху.
Нет, это не дубликат. Прочтите ответ на этот вопрос. "Без скобок" - это не ответ.
Вы можете либо обернуть функцию, либо добавить параметры после параметра delay: setTimeout(dosearch, delay, entered)developer.mozilla.org/en-US/docs/Web/API/…
dosearch(entered) — это вызов функции. Выполняется оценка доsetTimeout().
У меня сложилось впечатление, что dosearch(entered) исполняется после. Как я могу отсрочить это с помощью setTimeout(function, delay)?
он выполнит возвращаемое значение dosearch(entered)
Снова прочитайте все ответы на дубликат. stackoverflow.com/a/7137443/1586174
setTimeout(() => dosearch(entered), delay) Да, это то, что я хочу. ПОСЛЕ задержки.
Оберните dosearch(entered) в функцию: function() { dosearch(entered); }



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ответ: оба из них работают:
setTimeout(() => dosearch(entered), delay)
setTimeout( function() { dosearch(entered) }, delay)
потому что вы вызываете его и назначаете то, что он возвращает, тайм-ауту....