2012-06-22 2 views
3

Мне нужно обработать таймауты в своих $ .ajax() вызовах проекта jQueryMobile. Выполняя некоторые исследования, я столкнулся с двумя жизнеспособными методами.В этом случае лучше .fail() или .timeout()?

.error() .fail(), кажется, общий: если вызов не по какой-либо причине, то я пнул назад стек ошибок, а затем вызов функции записывается обрабатывать все, что мне нужно это.

.timeout, по-видимому, позволяет мне иметь дело с таймаутами и указать период времени, который я могу подождать, если я не получу ответа, тогда вызов истечет и выдает ошибку.

Мой вопрос в мобильной среде, было бы лучше обрабатывать таймауты с помощью вызова .timeout()? Или я должен покрывать все вызовы функцией .error() .fail() и выполнять таймауты в обратном вызове ошибки?

Работа с мобильными устройствами ожидается, что пользователь может выйти из зоны покрытия, поэтому, если вызов никогда не вернется, моя кишка скажет, чтобы реализовать функцию таймаута. Имеют ли ошибки обратные вызовы встроенный тайм-аут? Я хотел бы обработать все ошибки изящно, поэтому кажется, что, возможно, счастливый носитель будет реализовывать оба, и указывая таймауты, чтобы работать непосредственно с обратным вызовом таймаута.

Есть ли что-нибудь, что у меня может быть отсутствует здесь?

+4

Просто к сведению, '.error' амортизируется, используйте' .fail' –

+0

Я предложил бы использовать опцию тайм-аута в дополнение к добавлению в 'fail' обработчик. –

+0

http://api.jquery.com/jQuery.ajax упоминает об этом, но это также объясняется в документации по отложенным объектам по адресу http://api.jquery.com/deferred.fail/ –

ответ

0

Время-событие вызовет функцию fail() -функция!

Вы должны установить значение тайм-аута для $.ajax() -request.

$.ajax({ 
    timeout: 15000 // 15sec 
    }); 

Если Ajax-запрос не получил ответа в этот период времени будет Выполнение выражений функцию, которая передавалась в .fail() -функции.

$.ajax() 
    .fail(function(jqXHR, textStatus, errorThrown) { 
     if(textStatus === 'timeout') { 
      alert("$.ajax failed!"); 
     { 
    }); 
Смежные вопросы