Я использую следующую функцию ajax:
function callAjax(request,callback)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
if(callback != null)callback(xmlhttp.responseText);
}
}
xmlhttp.open("GET",request,true);
xmlhttp.send();
}
И я обнаружил, что когда я вызываю эту функцию 3 или более раз подряд, некоторые из обратных вызовов иногда не выполняются.Возникает запрос ajax и возвращается результат, но каким-то образом функция обратного вызова не вызывается.Хуже того, это даже не происходит последовательно - иногда это работает, иногда нет.Что я хочу знать, почему?И что более важно, как я могу это исправить?Насколько я могу судить, обратные вызовы будут выполняться, если между ними будет промежуток не менее 4 миллисекунд.Если две страницы вернутся в течение этого периода времени, только одна из них (вторая, я верю, но я не уверен, что это всегда так) будет обрабатываться.уверен, что я жду только одного ajax-запроса на возврат за один раз (через либеральное использование sleep ()).Тем не менее, это значительно замедляет страницу;Я хочу быть в состоянии выполнить все три (или более) запроса и заставить их выполнять свои обратные вызовы всякий раз, когда они возвращаются.
Что я делаю не так?Как мне заставить это работать?
NB: Я не ищу кого-то, кто бы сказал: «О, вы должны использовать jquery».Я не хочу использовать какие-либо внешние библиотеки для этого - пожалуйста, просто скажите мне, как исправить код, который у меня есть.