Предотвращение "условий гонки" с помощью вызовов jQuery AJAX - PullRequest
3 голосов
/ 13 февраля 2011

В настоящее время я изучаю немного непонятный иностранный язык, поэтому я сделал простой сайт (http://ianburris.com/armenian/)), чтобы я мог легко найти слова из книги, используемой в моем классе. Одна вещь, которую я заметил, это то, чтоиногда, если я ввожу что-то вроде «house», запрос слов, соответствующих «h», завершается после запроса «ho», и поэтому результаты для «h» перезаписывают результаты для «ho». Это особенно очевидно, если вывведите слово, а затем быстро нажмите клавишу Backspace. После того, как вы очистите все символы, на секунду появится мое сообщение «Введите английское слово», а затем последний AJAX-запрос, наконец, завершит перезапись сообщения.способ, по существу, отменить вызовы AJAX или я должен включить временную метку, которую я могу использовать для отбрасывания устаревших результатов?

1 Ответ

6 голосов
/ 13 февраля 2011

Поддерживайте переменную для определения порядкового номера выполняемого вызова Ajax, например.1 для первого вызова, 2 для второго вызова, 3 для вызова Ajax для 3-й буквы.И всякий раз, когда запрос ajax завершен, проверьте текущую длину строки значения вашего поля ввода.Если они совпадают, данные верны, напишите их на своей странице, иначе отклоните.

пример: запрос ajax со значением 3 выполнен, текущее значение в поле ввода = "hou", так как hou.length ==3, это правильное соответствие, и данные могут быть обработаны.

...