Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.06.2014, 03:23
Новичок на форуме
Отправить личное сообщение для pelzar Посмотреть профиль Найти все сообщения от pelzar
 
Регистрация: 18.06.2014
Сообщений: 5

setInterval. Не могу заставить работать внутри функции
Здравствуйте
Есть скрипт.
function get_fb(){
	$.ajax({
    url:'http://site.ru/1.png',
    type:'HEAD',
	async: false,
    error:
        function(){
            
        },
    success:
        function(){
            jQuery( ".main" ).hide();
        }
});
}
setInterval(function(){get_fb();}, 10000);


Он работает.

Хотел сделать, чтобы ajax запрос повторялся только в случае, если этот файл не найден, но setInterval не работает внутри

error:
        function(){
           setInterval(function(){get_fb();}, 10000); 
        },

Помогите, пожалуйста.

Последний раз редактировалось pelzar, 18.06.2014 в 04:21.
Ответить с цитированием
  #2 (permalink)  
Старый 18.06.2014, 07:54
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Если вызываемая функция имеет имя, то нет необходимости использовать анонимную функцию-обертку.
И почему setInterval, а не setTimeout(get_fb, 10000)?
Ответить с цитированием
  #3 (permalink)  
Старый 18.06.2014, 11:19
Новичок на форуме
Отправить личное сообщение для pelzar Посмотреть профиль Найти все сообщения от pelzar
 
Регистрация: 18.06.2014
Сообщений: 5

Так в отличие от метода setInterval, setTimeout выполняет код только один раз. А мне нужно, чтобы наличие файла проверялось раз в десять секунд, но только в случае, если в предыдущую проверку он не был обнаружен
Ответить с цитированием
  #4 (permalink)  
Старый 18.06.2014, 11:23
Новичок на форуме
Отправить личное сообщение для pelzar Посмотреть профиль Найти все сообщения от pelzar
 
Регистрация: 18.06.2014
Сообщений: 5

В общем, сделал так
<script type="text/javascript">
    setTimeout(function(){get_fb();}, 0);
	function get_fb(){
	$.ajax({
    url:'http://union-experts.ru/webinar/do-nachala.png',
    type:'HEAD',
	async: false,
    error:
        function(){
         setInterval(function(){get_fb();}, 10000);
        },
    success:
        function(){
            jQuery( ".main" ).hide();
        }
});
}
</script>
Ответить с цитированием
  #5 (permalink)  
Старый 18.06.2014, 11:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

pelzar,
а теперь не спеша подумайте есть ошибка нет ошибки setInterval долбит сервер -- с setTimeout только в случаае ошибки повторение и повторение через 10 секунд -- пришёл ответ сервер больше не нагружается-- конечно и setInterval можно отключить в случае успешного ответа но с таймером проще и меньше нагрузка
Ответить с цитированием
  #6 (permalink)  
Старый 18.06.2014, 11:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

pelzar,
а в вашем варианте пост 4 через пару минут будет долбится несколько тысяч запусков
Ответить с цитированием
  #7 (permalink)  
Старый 18.06.2014, 11:43
Новичок на форуме
Отправить личное сообщение для pelzar Посмотреть профиль Найти все сообщения от pelzar
 
Регистрация: 18.06.2014
Сообщений: 5

Так вы имеете ввиду?
<script type="text/javascript">
    if (jQuery.cookie('choice') == null) {
	setTimeout(function(){get_fb();}, 0);
	}
	function get_fb(){
	$.ajax({
    url:'http://union-experts.ru/webinar/do-nachala.png',
    type:'HEAD',
	async: false,
    error:
        function(){
		 jQuery.cookie('choice', '1');
         setTimeout(function(){get_fb();}, 10000);
        },
    success:
        function(){
            jQuery( ".main" ).hide();
        }
});
}
</script>
Ответить с цитированием
  #8 (permalink)  
Старый 18.06.2014, 11:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

pelzar,
да по таймерам -- остальное сами проверяйте
Ответить с цитированием
  #9 (permalink)  
Старый 18.06.2014, 13:40
Новичок на форуме
Отправить личное сообщение для pelzar Посмотреть профиль Найти все сообщения от pelzar
 
Регистрация: 18.06.2014
Сообщений: 5

рони,
Спасибо
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу заставить! Виктор хаб Элементы интерфейса 1 18.02.2014 15:56
нужно заставить одновременно работать слайдер и модальное окно обратной связи kvant355 Javascript под браузер 3 22.07.2013 16:34
Как загрузить и заставить работать скрипт после загрузки frame? Chifu Общие вопросы Javascript 3 13.04.2013 14:18
Как таймер заставить работать поочерёдно вызываю одну и ту же функцию два раза? JavaScriptProgrammer Events/DOM/Window 12 08.11.2012 23:41
Заставить работать js подгружаемый AJAX -ом DeMONiZ AJAX и COMET 14 21.05.2010 10:52