У меня есть междоменный длинный запрос опроса с помощью getJSON с обратным вызовом, который выглядит примерно так:
$.getJSON("http://long-polling.com/some.fcgi?jsoncallback=?"
function(data){
if(data.items[0].rval == 1) {
// update data in page
}
});
Проблемой является запрос к долго опрашивающему сервису, мог бы требовать времени к возврату, и другой запрос getJSON мог бы быть выполнен тем временем и обновить страницу даже при том, что это - устаревший ответ.
Req1: h ** p://long-polling.com/some.fcgi в 10:00
Req2: h ** p://long-polling.com/some.fcgi? в 10:01
Req1 возвращает и обновляет данные на странице 10:02
Я хочу способ делать недействительным возврат из Req1, если Req2 был уже сделан.
Спасибо!
Я не думаю, что это работает, поскольку getJSON использует метод JSONP, который на самом деле работает, динамически вставляя тег скрипта, который выполняет ваш браузер. Я не думаю, что есть способ остановить выполнение скрипта браузером ... есть ли?
Когда вы делаете запрос ajax, он возвращает объект XMLHttpRequest. Если вы хотите прервать
вызов, вы можете вызвать для него метод .abort ()
.
var request = $.getJSON(. . . . . );
request.abort();