Javascript.RU

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

массив объектов xmlHttpRequest
Здравствуйте. Столкнулась с такой задачкой. У меня есть асинхронные запросы и мне нужны для каждого свои объекты xmlHttpRequest. Пытаюсь делать так,но при одновременном выполнении, один запрос всё равно перекрывает другой...
Может быть кто-нибудь увидит ошибку? Или подскажет, как правильно реализовать массив объектов xmlHttpRequest?

Отрывки кода:
var HTR = new Array();
    var j;

//(отправляю запрос)
function sendRequest1(j, url) {
        ind = j;
        HTR[ind]=new XMLHttpRequest(); //создаю объект запроса
        HTR[ind].open("GET", url, true);
        HTR[ind].onreadystatechange = serverAir1;
        HTR[ind].send(null);          
    }

function serverAir1() {
 
        if (HTR[ind].readyState == 4)
            if (HTR[ind].status == 200) {
 
                var str1 = HTR[ind].responseText; //получаю текст ответа
         }
            else if (HTR[ind].status == 404)
                alert("Request URL does not exist");
            else
                alert("Error: status code is " + HTR[ind].status);
 
    }


вот так в другой функции вызываю
j = 1;//в зависимости от полосы значение 1 или 2
                sendRequest1(j, url);


Пыталась отслеживать значение ind, везде передавал как следует... на 1м-1е,на 2м-2е... однако при одновременном выполнении, более поздний запрос прекращает выполнение раннего..
Ответить с цитированием
  #2 (permalink)  
Старый 10.12.2013, 22:29
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,127

Сообщение от Seintero
как правильно реализовать массив объектов xmlHttpRequest?
Массива не нужно... Используй замыкание - т.о. объект будет существовать индивидуально для каждого вызова.

Как иллюстрация

mess(1);
mess(2);
mess(3);
function mess(Val){
	var o={status: Val};
	setTimeout(
		(function (O){
			return function (){
				test(O);
			}
		})(o)
	,
		2000
	);
};
function test(Obj) {
	alert(Obj.status);
};

При каждом вызове mess() создается свой объект, который потом обрабатывает некая функция, по прошествии некоего времени...
Что достаточно похоже на отправку запроса и обработку ответа на него...

Последний раз редактировалось ksa, 10.12.2013 в 22:31.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
массив объектов bohdan Общие вопросы Javascript 2 29.02.2012 23:40
Количество объектов XMLHttpRequest Mgauk AJAX и COMET 3 30.03.2011 04:36
Массив объектов или объект объектов vladlen Общие вопросы Javascript 19 30.10.2010 03:10
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Быстрый поиск объектов Shasoft Общие вопросы Javascript 7 30.07.2009 05:28