Просьба периодически возвращаться пустой в условиях гонки - PullRequest
1 голос
/ 13 апреля 2010

Какая может быть следующая причина?

Я использую скрипт автозаполнения со следующим кодом:

if (that.currentAjaxRequest !== null) {
    that.currentAjaxRequest.abort();
}

that.currentAjaxRequest = $.get(query_string,
    function(data) {
        that.doStuff(data);
    }
);

Сценарий задушен. Таким образом, после каждого нажатия клавиши перед отправкой запроса происходит задержка около 300 мс.

Это прекрасно работает в моей тестовой среде. Однако в реальной среде я сталкиваюсь с ситуацией, когда периодически, если запросы отправляются близко друг к другу (примерно 300 мс), каждый раз последний запрос возвращается пустым. То есть данные будут «неопределенными». Почему это может быть?

1 Ответ

1 голос
/ 13 апреля 2010

Кажется, это ошибка jQuery , представленная в 1.4: при ручном прерывании вызова ajax jQuery будет вызывать функцию успеха с пустой строкой вместо функции ошибки.

Вы можете обойти это, отметив xhr.status в вашем обратном вызове:

function(data, textStatus, xhr) {
    if (xhr.status) {
        //a successful call
    }
    else {
        //an aborted call
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...