. values, :
["a", "delay", "b", "delay", "c", "d"]
, .
let data = [
{value: 'a'},
{delay: [
{value: 'b'},
{delay: [
{value: 'c'}
]}
]},
{value: 'd'}
];
let values = [];
while(data.length) {
if(typeof data[0].value !== 'undefined') {
values.push(data[0].value);
data.shift();
}else {
values.push('delay');
var delayArray = data[0].delay;
data.shift();
data = delayArray.concat(data);
}
};
outputDelay(values);
function outputDelay(elements) {
if(!elements.length) return false;
if(elements[0] == "delay") {
setTimeout(function(){
elements.shift();
outputDelay(elements);
}, 2000);
} else {
console.log(elements[0]);
elements.shift();
outputDelay(elements);
}
}