Javascript.RU

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

$.post с ожиданием ответа внутри .each()
Есть перебор блоков:

div.each(function(){
   $.post(url,vars,function(data){
      //....actions
   })
})


Например в переборе 10 блоков div, из каждого мы вытягиваем данные и шлем их на сервер и ждем ответа, если делать так, то 10 запросов пошлются сразу, ответа друг за другом ждать они не будут. А нужно сделать так:

div.each(function(){
    //..получили данные из текущего div
    //шлем запрос и ждем ответ
   $.post(url,vars,function(data){
      //....actions
   })
   //как дождались ответа и выполнили действия с данными полученными в ответе от сервера приступаем к следующему шагу .each()
})


Я думаю можно слепить такой костыль:

div.each(function(){
    var serverStatus=false;
    //..получили данные из текущего div
    //шлем запрос и ждем ответ
   $.post(url,vars,function(data){
      //....actions
      serverStatus=true;
   })
     //каждых пол секунды проверяем переменную serverStatus (завершились ли действия над ответом от сервера)

      var i = function f() {
         if(serverStatus){ clearInterval(i); break;}  //если завершились действия над ответом от сервера, то выходим из цикла и приступаем к след итерации .each()
      }
      setInterval(i, 500); 

})

это все еще обернуть в цикл, ....
Но это по моему мнению очень плохой костыль, посоветуйте что-то более адыкватное!
p.s. спасибо за внимание)

Последний раз редактировалось Sanu0074, 21.01.2014 в 12:24.
Ответить с цитированием
  #2 (permalink)  
Старый 21.01.2014, 14:55
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от Sanu0074
посоветуйте что-то более адыкватное
Не использовать циклы вообще.

Посылать следующие данные только в ответе сервера.
Правда нужно учитывать, что сервер может и не ответить... Как и ответить ошибкой.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
$.post, разный dataType ответа bayanruby AJAX и COMET 6 04.09.2013 16:59