clearTimeout не работает в сценарии автозаполнения JavaScript - PullRequest
6 голосов
/ 12 апреля 2010

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

var that = this;

textInput.bind("keyup", function() {

    clearTimeout(that.timer);

    that.timer = setTimeout (that.doStuff(), 2000);

});

К сожалению, это не очищает старые таймеры. Они все еще выполняют.

Кто-нибудь знает, что мне не хватает?

Спасибо!

1 Ответ

10 голосов
/ 12 апреля 2010

Вы, вероятно, хотите использовать:

that.timer = setTimeout (that.doStuff, 2000);

вместо:

that.timer = setTimeout (that.doStuff(), 2000);

В противном случае doStuff будет вызван немедленно.

...