Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Задержка цикла

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Поэлементная задержка цикла for, а не та задержка, о которой вы подумали... ;)
prgrant
Отправлено: 23 Января, 2013 - 13:02:24
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




Здравствуйте ув. форумчане.
Ценителям неординарного мышления посвящается такой вопрос:
Как задержать цикл for так, чтобы каждый следующий элемент i++ сработал только после получения данных от json (data.result)?

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. for (var i=0; i<$city_id_scan.length; i++) {
  3.         $('#tip_' + $city_id_scan[i]).show().html('<img src="http://site.ru/ajax/ajax-loader.gif">');
  4.         $res = 0;
  5.         Query.post("http://site.ru/ajax/ajax_scan.php", {
  6.                 "_city_id_scan" : $city_id_scan[i],
  7.                 "_amount" : 0.5,
  8.                 "_weight" : 100},
  9.                                                                                                
  10.                 function(data){
  11.                         if (data.result != false)
  12.                                 {
  13.                                         $('#tip_' + $city_id_scan[i]).hide().html('<img src="http://site.ru/ajax/ajax-loader.gif">');
  14.                                         $('#ok_' + $city_id_scan[i]).show().html('<span style="color:green;">ok</span>');
  15.                                 }
  16.                         else
  17.                                 {
  18.                                         alert (data.result);
  19.                                         $('#tip_' + $city_id_scan[i]).hide().html('<img src="http://site.ru/ajax/ajax-loader.gif">');
  20.                                         $('#error_' + $city_id_scan[i]).show().html('<span style="color:red;">error</span>');
  21.                                 }
  22.                         }
  23.         , "json");
  24. }      
  25.  
 
 Top
DelphinPRO
Отправлено: 23 Января, 2013 - 13:19:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




никак. в javascript не бывает задержек. нужно просто вызывать функцию после получения данных:

CODE (javascript):
скопировать код в буфер обмена
  1. loop(0, $city_id_scan.length);
  2.  
  3. function loop(i, len) {
  4.         if (i < len) {
  5.                 $.post(
  6.                         ... // опции запроса
  7.                         function(data){
  8.                                 ... // обработка данных
  9.                                 loop(++i, len); // вызов после обработки запроса
  10.                         }
  11.                 );
  12.         }
  13. }

(Отредактировано автором: 23 Января, 2013 - 13:20:22)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Zuldek
Отправлено: 23 Января, 2013 - 13:24:42
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Не очень понял причем тут неординарное мышление.
Подождать данные а по получению запускать функцию их обработки.

(Отредактировано автором: 23 Января, 2013 - 13:27:03)

 
 Top
DeepVarvar Супермодератор
Отправлено: 23 Января, 2013 - 13:33:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Во:
Цитата:
http://forum.php.su/topic.php?forum=40&topic=3772&postid=1333407556#1333407556
 
 Top
prgrant
Отправлено: 23 Января, 2013 - 13:41:32
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




DelphinPRO пишет:
нужно просто вызывать функцию после получения данных:

Спасибо, помогли.
(Добавление)
Zuldek пишет:
Не очень понял причем тут неординарное мышление.

Не так выразился. Задача оказалась проще, чем я думал... Подмигивание
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB