Git.
var gitFake = {0 : [{ name:'src', type:'tree', id:43433432 },
{ name:'readme.md', type:'md', id:45489898 }
],
43433432: [ { name:'app.jsx', type:'file', id:57473738 },
{ name:'contain.jsx', type:'file', id:748433454 },
{ name:'client', type:'tree', id:87654433 }
],
87654433: [ { name:'index.html', type:'file', id:44444422 }
],
getDir : function(id,cb){ setTimeout(cb, 250, !this[id] && "Error: No such directory..!", this[id])}
};
getDir, , 250. gitFake.getDir(id,cb), , , - , cb(err,data), . , ;
function promisify(f){
return data => new Promise((v,x) => f(data, (err,res) => err ? x(err) : v(res)));
}
getAllDirs, ;
function promisify(f){
return data => new Promise((v,x) => f(data, (err,res) => err ? x(err) : v(res)));
}
function getAllDirs(root = 0){
gd(root).then(function(ds){
ds.length && (console.log(ds),
ds.filter( d => d.type === "tree")
.forEach(d => getAllDirs(d.id)));
})
.catch(e => console.log(e));
}
var gitFake = {0 : [{ name:'src', type:'tree', id:43433432 },
{ name:'readme.md', type:'md', id:45489898 }
],
43433432: [ { name:'app.jsx', type:'file', id:57473738 },
{ name:'contain.jsx', type:'file', id:748433454 },
{ name:'client', type:'tree', id:87654433 }
],
87654433: [ { name:'index.html', type:'file', id:44444422 }
],
getDir : function(id,cb){ setTimeout(cb, 250, !this[id] && "Error: No such directory..!", this[id])}
},
gd = promisify(gitFake.getDir.bind(gitFake));
getAllDirs();
.as-console-wrapper { max-height: 100% !important; top: 0; }
Hide result