/**
* Структурируйте ваши данные чтобы вам проще было с ними работать
*/
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);