Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.08.2011, 21:12
Новичок на форуме
Отправить личное сообщение для gv0zd Посмотреть профиль Найти все сообщения от gv0zd
 
Регистрация: 01.07.2010
Сообщений: 2

Рекурсивный вызов функции с задержкой
Есть своя CMS, есть рассылка почты клиентам.
Ранее рассылка была реализована пачками по 50 адресов, новая пачка вызвалась за счет

<meta http-equiv="Refresh Content="3; URL=./dir/">


Захотел это сделать ассинхронно. прикрутить красивый прогрессбар
Важный момент, между обращения к скрипту должна быть пауза в 3 сек. Чтоб не перегружать почтовик

$("document").ready(function() {
    function sendMails () {
		$action = $('#action').val();
		
        $.ajax({ 
            type: "POST", 
            dataType: "json", 
            cache: false, 
            url: '?action='+$action+'&subaction=ajax', 
            timeout: 25000, 
            error: function() { 
	            alert ('Ошибка');
            }, 
            success: function(data) {
		    	if (data.result == 'ok' && $(data.data).size()) {
			        $('#sent').text(data.data.sent);
				$('#remain').text(data.data.remain);
				$('#percents').text(data.data.percents);
				$('#errors').text(data.data.errors);
                                setTimeout(sendMails(),30000);					
    		    }
				else if (data.result == 'finished') {
					alert ('Все сделано');
				}
            } 
        }); 
	}
	sendMails();
});

Работает рекурсивно, но задержек между ответом сервера и новым обращением нет.

Уже повсякому прокрутил это скрипт.
В Javascript не силен. Перегуглил все подряд.

Так как не полуается, уже склоняюсь к тому чтоб паузу сделать на стороне php. Но хотелось бы все-таки в javascript
Ответить с цитированием
  #2 (permalink)  
Старый 23.08.2011, 21:20
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

0. А зачем здесь client-side? Коль скоро почту Вы рассылаете каким-нибудь серверным скриптом, какой смысл в клиентском коде?
1.
Сообщение от gv0zd
Работает рекурсивно, но задержек между ответом сервера и новым обращением нет.
А чего Вы ещё ожидаете, вызывая функцию прямо после ответа
Сообщение от gv0zd
 setTimeout(sendMails(),30000);    
Следовало написать
setTimeout(sendMails,3000);
Ответить с цитированием
  #3 (permalink)  
Старый 23.08.2011, 23:09
Новичок на форуме
Отправить личное сообщение для gv0zd Посмотреть профиль Найти все сообщения от gv0zd
 
Регистрация: 01.07.2010
Сообщений: 2

Сообщение от B@rmaley.e><e Посмотреть сообщение
0. А зачем здесь client-side? Коль скоро почту Вы рассылаете каким-нибудь серверным скриптом, какой смысл в клиентском коде?
Серверного решения быстро не нашел в свое время, поэтому реализовал
Влоб, сейчас решил чуть обкрасивить

Сообщение от B@rmaley.e><e Посмотреть сообщение
1. А чего Вы ещё ожидаете, вызывая функцию прямо после ответаСледовало написать
setTimeout(sendMails,3000);
Семен Семеныч!!!!
Спасибо. Все работает
Ответить с цитированием
  #4 (permalink)  
Старый 12.08.2012, 23:23
Новичок на форуме
Отправить личное сообщение для Smile Посмотреть профиль Найти все сообщения от Smile
 
Регистрация: 12.08.2012
Сообщений: 2

Не выполняет рекурсивный вызов функции
Кто знает в чем проблема?

$(document).ready(function(){
function calc(i){
alert(i);
i++;
calc(i);
}
calc(0);
});

В php таким способом можно организовать рекурсивный вызов функции, а в jQuery ну ни как не работает.
Ответить с цитированием
  #5 (permalink)  
Старый 12.08.2012, 23:36
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Smile,
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>

<script type="text/javascript">
$(document).ready(function(){
 function calc(i){
 alert(i);
 i++;
 calc(i);
 }
 calc(0);
 });
</script>


Ecть подозрение - что есть кривое использование на странице (до скрипта с вызовом рекурсии ) конструкции
$(document).ready(function(){
Рекурсивный скрипт ставьте в самый конец страницы


Попробуйте убрать подобные конструкции до данного скрипта и ставить их по одному и наблюдать

Последний раз редактировалось Deff, 12.08.2012 в 23:50.
Ответить с цитированием
  #6 (permalink)  
Старый 14.08.2012, 12:49
Новичок на форуме
Отправить личное сообщение для Smile Посмотреть профиль Найти все сообщения от Smile
 
Регистрация: 12.08.2012
Сообщений: 2

спасибо за совет
Спасибо за совет

Вроде разобрался. Написал вот карусель с отслеживанием события hover, over стопорит карусель, out запускает. Знаю, что такое уже давно используется во всякого рода plag-in, хотелось вот самому допереть.
Кому интересно, вот что получилось:

http://smile.gid-interior.ru/btimes/
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов функции (Sandr) AJAX и COMET 12 16.03.2011 10:43
Вызов функции TicTac Общие вопросы Javascript 2 24.01.2011 23:35
непонятный вызов функции hedgi Общие вопросы Javascript 2 05.08.2010 11:55
вызов функции из функции sharp_007 Общие вопросы Javascript 2 03.04.2010 21:13
Вызов функции из другой функции.. ?? glutton Общие вопросы Javascript 3 21.08.2009 22:33