Это действительно основной вопрос JavaScript и, вероятно, дубликат, но я не знаю ответа!jQuery/JavaScript: событие прерывания?
У меня есть код следующим образом:
function userlist_change(myval, function_type) {
// relatively slow code involving Ajax call
// based on Ajax results, change some client-side stuff
}
$("#subjectlist").change(function() {
userlist_change($("#subjectlist").val(), 'change');
}).change();
$("#subjectlist").keypress(function() {
userlist_change($("#subjectlist").val(), 'keypress');
});
У меня есть проблема, что если .change()
событие вызывается функция userlist_change
пинает, и это относительно медленно. Если пользователь снова изменит список (например, набрав), мой код ждет завершения userlist_change
, прежде чем перезапускать его с новым значением.
В пользовательском интерфейсе это выглядит довольно странно, так как может потребоваться несколько секунд для изменения клиентской стороны, а иногда результаты первого вызова появляются только после того, как пользователь уже совершил второй звонок.
Можно ли каким-либо образом прервать любой существующий процесс userlist_change
при запуске события .change()
или `keypress()?
[EDIT] Что было бы идеальным, это простая команда «убить любые запущенные функции с помощью этого имени» - возможно ли это? Или мне действительно нужно возиться с таймерами ?!