 
			
				25.03.2015, 15:56
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 15.11.2014 
					
					
					
						Сообщений: 10
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				ajax в цикле
			 
			
		
		
		
		не могу никак сделать чтоб в цикле 
for (var key in obj) { 
  аякс запрос; 
} 
 
переходило на следующую итерацию только тогда, когда завершится аякс запрос, как сделать задержку или что-то подобного рода? использую mootools 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.03.2015, 16:04
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.12.2012 
					
					
					
						Сообщений: 1,398
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		icom,
 
var arr = [...] //Массив данных для запроса
var request = function (arr) {//Функция которая делает запрос принимает массив даннх для запроса
  $.get(arr.pop, function (data) {//Делаем запрос отрезая от массива последние данные (запрос с последним элементом массива)
     ...// обрабатываем ответ
     if (arr.length)  request(arr); //Если в массиве ещё есть данные вызываем снова функциб запроса передавая туда остатки массива пока он не кончится
  });
}
request(arr);
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось tsigel, 25.03.2015 в 16:07.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.03.2015, 16:17
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 CacheVar 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2010 
					
					
					
						Сообщений: 14,298
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 icom, цикл тут тебе не помощник... 
 
Как вариант, шли следующий запрос в ответе на предыдущий... 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.03.2015, 16:26
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 15.11.2014 
					
					
					
						Сообщений: 10
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		tsigel логику понял, спасибо, но как это применить к такому коду?
 
var ids_array = getCookie('ids_array');
			
			function openIds(obj) {
				for (var key in obj) {
				
					if (typeof $(key) !== 'undefined') {
						if ($(key).hasClass('namesc_sub')) {
							SDD.checkSubs(parseInt(key.substr(11)));
						} else if ($(key).hasClass('namesc')) {
							SDD.checkSub(key);
						}
					}
					
					var next_obj = eval('obj.' + key);
						
					if (next_obj !== undefined) {
						openIds(next_obj);
					}
				}
			}
			
			if (ids_array) {
				var ids_obj = JSON.parse(ids_array);
				openIds(ids_obj);
			}
ids_obj многоуровневый\многомерны   объект, и нужно пройтись по каждому элементу, каждый элемент участвует в аякс запросе 
SDD.checkSubs и SDD.checkSub функции с аяксом  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось icom, 25.03.2015 в 16:29.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.03.2015, 16:30
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.12.2012 
					
					
					
						Сообщений: 1,398
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 icom, 
 ой, я дочитал до строчки с eval и понял что там что-то сооовсем не так 
 
Попробуйте целиком описать задачу словами, возможно Вам предложат другое архитектурное решение чтобы не было таких страшных функций. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.03.2015, 16:31
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 15.11.2014 
					
					
					
						Сообщений: 10
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 нужно чтоб цикл "остановился" пока не отработает SDD.checkSubs 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.03.2015, 16:33
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 15.11.2014 
					
					
					
						Сообщений: 10
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 tsigel сейчас сформулирую 
ksa возможно, но больше ничего не придумал, сейчас попробую объяснить что мне нужно 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.03.2015, 17:31
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 15.11.2014 
					
					
					
						Сообщений: 10
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		есть такая гармошка)  http://hotel.biz.ua/truby-i-fitingi.html
при нажатии аяксом подгружается контент с такими же гармошками, вложенность безграничная, моя задача чтоб при перезагрузке страницы, автоматом открывались вкладки, которые были открыты до этого 
я при нажатии на вкладку, сохраняю ее id в строку json в куках, в виде многомерного объекта, иначе никак не придумал, потом в цикле перебираю этот объект, и открываю по очереди  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.03.2015, 17:32
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 15.11.2014 
					
					
					
						Сообщений: 10
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 все бы работало, если бы в цикли успевали обрабатываться аякс запросы 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.03.2015, 18:01
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.12.2012 
					
					
					
						Сообщений: 1,398
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
/**
 * Структурируйте ваши данные чтобы вам проще было с ними работать
 */
var data = {
    name: "Item1",
    content: [
        {
            name: "Item2.1",
            content: [
                {
                    name: "Item3.1",
                    content: []
                },
                {
                    name: "Item3.2",
                    content: []
                }
            ]
        },
        {
            name: "Item2.2",
            content: []
        },
        {
            name: "Item2.3",
            content: []
        }
    ]
};
/**
 * Превращаем наш структурированный объект любой глубины в массив данных для запроса
 * @type {Array}
 */
var toRequest = [];
var getDataToRequest = function (data) {
    toRequest.push(data.name);
    if (data.content) {
        data.content.forEach(getDataToRequest);
    }
};
getDataToRequest(data);
/**
 * Это эмуляция аякса (Время запроса от 1 до 2 секунд)
 * @type {{get: Function}}
 */
var $ = {
    get: function (data, success) {
        function getRandomInt(min, max) {
            return Math.floor(Math.random() * (max - min + 1)) + min;
        }
        setTimeout(function () {success(data)}, getRandomInt(1000, 2000));
    }
};
/**
 * Запрашиваем данные из массива по очереди начиная с 1 элемента массива
 * @param arr
 */
var request = function (arr) {
    $.get(arr.shift(), function (data) {
        console.log(data + " loaded!");
        if (arr.length) {
            request(arr);
        } else {
            alert("Все загружено!");
        }
    });
};
request(toRequest);
 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |