Показать сообщение отдельно
  #1 (permalink)  
Старый 13.06.2016, 18:00
Новичок на форуме
Отправить личное сообщение для whoim Посмотреть профиль Найти все сообщения от whoim
 
Регистрация: 13.06.2016
Сообщений: 5

setTimeout и xmlhttprequest во множественном числе
Приветствую!
Система мониторинга серверов. Специфическая, под задачу.

На php генерируется около 30 js-строк вида
setTimeout('load_data(\'".$row[0]."\')', 50);


вызывающие функцию load_data одновременно с разными параметрами. Это срабатывает, в отладке появляется сразу пачка запросом от функции

function load_data(id) {
  var xmlhttp = new XMLHttpRequest();
  var url = "scriptname.php?id="+id;

  xmlhttp.onreadystatechange = function() {
      if(xmlhttp.readyState == 4) {
          if (xmlhttp.status == 200) {
              var result = JSON.parse(xmlhttp.responseText);
              show_data(id,result);
          }
          setTimeout('load_data('+id+')', 100);
      }
  };
  xmlhttp.open("GET", url, true);
  xmlhttp.send();
}


функция навешивает на окончание запроса обработку полученных данных (показ на странице) и "планирует" сама себя через setTimeout, через 100 мс.

Вот тут и вопрос. После первой "пачки" все остальные запросы идут в очереди. А так как скрипт, к которому обращается xmlhttprequest, работает 2-3 секунды, то и обновление идет черезвычайно долго.

В общем, запрос первый раз идут пачкой, а в дальнейшем - по очереди, один запрос в 2-3 секунды, хотя как мне думается, тоже должны идти пачкой.
Отчего так? Спасибо!
Ответить с цитированием