Показать сообщение отдельно
  #4 (permalink)  
Старый 01.02.2012, 10:19
Новичок на форуме
Отправить личное сообщение для Евгений М Посмотреть профиль Найти все сообщения от Евгений М
 
Регистрация: 01.02.2012
Сообщений: 4

Собственно асинхронную очередь я реализовал:
var link_index = 0;

function writeResult(xmlDoc)
{
	forumtitle = xmlDoc.getElementsByTagName("forumtitle")[0].childNodes[0].nodeValue;
	titles = xmlDoc.getElementsByTagName("title");
	links = xmlDoc.getElementsByTagName("link");
	len = titles.length;
	
	if (len == 0) return;
	
	document.write('<h1>' + forumtitle + '</h1>');
	for (i=0;i<len;i++)
	{
		link = links[i].childNodes[0].nodeValue;
		title = titles[i].childNodes[0].nodeValue;
		document.write('<a target="_blank" href="' + link + '">' + title + '</a><br>');
	}
}

function asyncHandler()
{
	if (this.readyState != 4)
		return;
	
	if (this.status == 200)
	{
		writeResult(this.responseXML);
		link_index++;
		runXMLRequest();
	}
}

function runXMLRequest()
{
	if (link_index>=linkArray.length)
		return;
	
	link = linkArray[link_index];
	requestLink = 'controller.php?' + link;
	xmlhttp = new XMLHttpRequest();
	xmlhttp.open("GET", requestLink, true);
	xmlhttp.onreadystatechange = asyncHandler;
	xmlhttp.send();
}

// .....

runXMLRequest();

Но работает не как хотелось бы. Появилась другая проблема.
Вообщем я смотрю на консоль (вроде так называется) Firebug. Смотрю что последовательно выполняются запросы. После каждого запроса выполняется writeResults().
- Если len равен нулю, то ничего не записывается (это нормально).
- Если len НЕ равен нулю, то записывается результат (document.write). А дальше необычное.
После document.write консоль очищается (до этого был список выполненных запросов) и через пару секунд появляется очередной запрос, который успешно выполнен (200 OK) и список обнаруженных ошибок:
Цитата:
attempt to run compile-and-go script on a cleared scope
if (this.readyState != 4)
Причем 3 штуки и ссылаются на одну строку.
И следующие запросы не выполняются.

Как с этим быть?
Ответить с цитированием