async: false ajax, зависает хром

Рейтинг: 1Ответов: 2Опубликовано: 31.03.2015

Помогите обернуть ajax запрос, чтобы он выполнялся последовательно async: false подвисает браузер, пробовал обернуть в функцию, но вылетают ошибки.

          $(document.getElementById('process')).on("click", function(e) {
          if (last_date_chk > new Date().getTime()) {
              getConfirm('<div style="padding:25px"><legend style="text-align:center;padding:10px!important">Невозможно обновить данные</legend><p>С момента последнего обновления данных <b>не прошло 20 минут.</b></p><p>Попробуйте повторить действие чуть позже, либо воспользуйтесь последними полученными данными.</p></div>', function(result) {});
          } else {
              var offers = [<?php echo '"' . implode('","', $offers[0]) . '"'; ?>],
                  offersDone = 0,
                  gmtDate = new Date,
                  timeOffset = gmtDate.getTimezoneOffset() / 60,
                  localDate = (new Date(gmtDate.getTime() - 36E5 * timeOffset)).toISOString().slice(0, 19).replace('T', ' ');


              if (clkBtnProgressbar == 0) {
                  clkBtnProgressbar = 1;

                  $('.progress').animate({
                      opacity: 'toggle'
                  }, {
                      duration: 2000,
                      start: function() {
                          $(this).css('display', 'block');
                      }
                  });
                  for (i = 0; i <= offers.length; ++i) {
                      $.ajax({
                          type: 'GET',
                          url: URL_SELF,
                          async: true,
                          data: {
                              buy_product_id: offers[i],
                              buy_product_date: localDate
                          }
                      }).done(function() {
                          ++offersDone;
                          $('.progress-bar').css('width', (offersDone / offers.length) * 100 + '%').attr('aria-valuenow', (offersDone / offers.length) * 100);
                      });
                  }
              } else {
                  getConfirm('<h2 class="text-center">Ждите…</h2>', function(result) {});
              }
          }
      });

Ответы

Ответов пока нет.