Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.11.2012, 19:27
Новичок на форуме
Отправить личное сообщение для t0rnad0 Посмотреть профиль Найти все сообщения от t0rnad0
 
Регистрация: 01.11.2012
Сообщений: 6

Ограничить время выполнения (количество запросов) Ajax
Здравствуйте! Есть скрипт который через заданный интервал времени подгружает блок

function show()  
        {  
            $.ajax({  
                url: "page_1.php",  
                cache: false,  
                success: function(html){  
                    $("#content").html(html);  
                } ;)  
        }  
      
        $(document).ready(function(){  
            show();  
            setInterval('show()',3000);  
        });


Выполняется он через каждые 3 секунды. Но нет необходимости делать больше 20 запросов или выполнять запросы дольше 1 минуты. Как ограничить время выполнения или количество Ajax запросов?

Последний раз редактировалось t0rnad0, 18.11.2012 в 02:48.
Ответить с цитированием
  #2 (permalink)  
Старый 17.11.2012, 22:25
Новичок на форуме
Отправить личное сообщение для t0rnad0 Посмотреть профиль Найти все сообщения от t0rnad0
 
Регистрация: 01.11.2012
Сообщений: 6

я так понимаю, что очищать можно через clearInterval, но как это реализовать чтобы он (clearInterval) срабатывал например через минуту?
Ответить с цитированием
  #3 (permalink)  
Старый 18.11.2012, 00:03
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

$(document).ready(function(){  
            show();  
            var id = setInterval('show()',3000);  
            setTimeout(function () { clearInterval(id); }, 60 * 1e3);
        });
Ответить с цитированием
  #4 (permalink)  
Старый 19.11.2012, 15:09
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

1e3 - очень экономная запись
Ответить с цитированием
  #5 (permalink)  
Старый 19.11.2012, 15:20
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

решал похожую задачу по опроса сервера, котоый отдает состояние охранных датчиков.
Изначально требовалось каждые 10с опрашивать, но потом договорились раз в 30с.
При использовании setInterval() иногда, но достаточно систематично, вываливалась неприятность - еще не пришел ответ на запрос, а уже отправляется следующий, что генерировало трафик и подгружало сервер.

Поэтому в веб-клиенте я заменил setInterval() на setTimeout() в такой логике: при успешном получении ответа на запрос, генерировался очередной setTimeout(). при неуспешном (таймаут или еще что) также генерировался setTimeout(), но уже с удвоенным периодо ожидания.
Ответить с цитированием
  #6 (permalink)  
Старый 19.11.2012, 15:25
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

Сообщение от deivan Посмотреть сообщение
решал похожую задачу по опроса сервера,
Поэтому в веб-клиенте я заменил setInterval() на setTimeout() в такой логике: при успешном получении ответа на запрос, генерировался очередной setTimeout(). при неуспешном (таймаут или еще что) также генерировался setTimeout(), но уже с удвоенным периодо ожидания.
а почему с удвоенным?
Ответить с цитированием
  #7 (permalink)  
Старый 19.11.2012, 15:48
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

Сообщение от deivan Посмотреть сообщение
вываливалась неприятность - еще не пришел ответ на запрос, а уже отправляется следующий
У jQuery.ajax есть замечательный параметр на этот случай: timeout - сбрасывает запрос при превышении времени ожидания.
Я ставлю в интервале 1000 мс, а timeout на 955 мс.
Ответить с цитированием
  #8 (permalink)  
Старый 19.11.2012, 16:00
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
backboneJS, дождаться выполнения всех AJAX запросов. anty Библиотеки/Тулкиты/Фреймворки 1 28.12.2011 04:30
Обработка данных во время AJAX запроса user783 AJAX и COMET 5 09.12.2011 03:24
Одновременное количество AJAX запросов decadent AJAX и COMET 18 03.06.2011 18:16
Google Chrome перерисовка страницы во время выполнения скрипта Dekart Javascript под браузер 0 08.06.2010 08:35
разное время выполнения операции ropowek Events/DOM/Window 2 08.10.2008 13:27