jQuery - отмена $ .post для предотвращения очередей - PullRequest
1 голос
/ 12 ноября 2011

ОК, поэтому я создаю целое веб-приложение с использованием AJAX с некоторым локальным хранилищем и т. Д.

Проблема, с которой я сталкиваюсь, иногда заключается в двойном щелчке мышью или быстром нажатии вкладок назад и вперед, которые вызывают $.почтовый звонок.

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

Очевидно, что это проблема.Что мне нужно сделать, это отменить текущие вызовы POST и просто получить последний обратный вызов.

Я пытался:

// Make Call:

if(call != undefined){
    call.abort();
}
var call = $.post(url,{do:'stuff'},function(response){
     // callback stuff:
},'json');

Говорит, что он неопределен независимо, я скорее использую .POST, чем .AJAX, если это возможно.

Спасибо за вашу помощь заранее!

Ответы [ 2 ]

1 голос
/ 12 ноября 2011

Одна вещь, которую вы можете сделать, если отмена не перехватит все ваши ожидающие XHR: увеличьте счетчик и передайте его своему бэкэнду, чтобы старые ответы не перекрывали новые. Просто включите в свой сервер значение счетчика в ответе, а затем обратный вызов может сравнить его с локальным счетчиком перед перезаписью.

1 голос
/ 12 ноября 2011

Просто отмените привязку к событию click, повторно привязайте его к callback.

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