Здравствуйте
Уже несколько дней бьюсь над задачей обхода многомерного массива, с задержкой после каждого цикла.
Сделать обход простого массива с задержкой - получается. Сделать обход многомерного массива без задержки - получается. А вот объединить два подхода в одном - не получается.
Примеры:
Обход массива с задержкой 1с:
function go(scenario) {
var i = 0,
timer = setInterval(
function() {
if (i < scenario.length) {
console.log('User: ' + scenario[i].user);
i++;
}
else{
clearInterval(timer);
}
},
1000
);
}
var scenario = [
{
'user': 'user1'
},
{
'user': 'user2'
},
{
'user': 'user3'
}
];
window.onload=function(){
go(scenario);
}
Обход многомерного массива без задержки:
var a = [ // общий массив
[ // массив stroke
[ // массив этапов
{
'user_id': 1
},
{
'user_id': 2
}
],
[
{
'user_id': 1
},
{
'user_id': 2
}
],
[
{
'user_id': 1
},
{
'user_id': 2
}
],
[
{
'user_id': 1
},
{
'user_id': 2
}
]
],
[ // массив stroke
[ // массив этапов
{
'user_id': 1
},
{
'user_id': 2
}
],
[
{
'user_id': 1
},
{
'user_id': 2
}
],
[
{
'user_id': 1
},
{
'user_id': 2
}
],
[
{
'user_id': 1
},
{
'user_id': 2
}
]
]
];
function go(a) {
i = 0;
while (i < a.length) {
j = 0;
while (j < a[i].length) {
n = 0;
while (n < a[i][j].length) {
console.log('Ход: ' + i + ' Эпизод: ' + j + ' Объект: ' + n);
n++;
}
j++;
}
i++;
}
}
go(a);
Есть понимание, что надо первый пример развить до трех вложенных функций с задержками, но у меня от вложенности такая каша получается, что и не работает, и не разобраться почему.
Буду признателен, если кто-то напишет готовый код.