tree traversal

by Fernando De Leon

HTML

<button id="press">
Press
</button>

JavaScript

var aTree = {
 folder:[
  {
   name:"father",
   children: {
    folder:[
     {
      name:"son1",
      children:{
       folder:[]
      }
     },
     {
     name:"son2",
     children:{
      folder:[
       {
        name:"son2.2",
        children:{
         folder:[]
        }
       },
       {
        name:"son2.3",
        children:{
         folder:[]
        }
       }
      ]
     }
     }
    ]
   }
  }
 ]
};
var mockCreationFolder = function(aFolder,id) {
return new Promise((resolve,reject) => {
 console.log("creation bla bla of",aFolder.name," using parentID:",id);
 let min = Math.ceil(1);
 let max = Math.floor(100);
 let rnd = Math.floor(Math.random() * (max - min +1)) + min;
 aFolder.id = rnd;
 console.log("created and its id is:",aFolder);
 resolve(rnd);
});
};


var fetchParent = function(tree,id) {
 tree.folder.forEach( aFolder => {
   console.log(aFolder.name,"lets create the folder with parentId of",id);
   mockCreationFolder(aFolder,id).then((folderId) => {
     if(aFolder.children.folder.length > 0) {
    	fetchParent(aFolder.children,folderId);
   	}
     else {
      console.log("the end!");
     }
   });
 });
};

$("#press").on("click",function(e) {
 fetchParent(aTree,99);
});