Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const data = [
- {
- title: "title-1.1",
- children: [
- {
- title: "title-2.1",
- },
- {
- title: "title-2.2",
- children: [
- {
- title: "title-3.1",
- }
- ]
- }
- ]
- },
- {
- title: "title-1.2",
- children: [
- {
- title: "title-2.1",
- children: [],
- }
- ]
- }
- ]
- let titles = []
- let jobs = 0
- let finished = false
- async function ticker() {
- while (!finished) {
- await new Promise(resolve => setTimeout(resolve, 250));
- console.log({message: 'ticker running', timestamp: new Date()})
- }
- console.log({message: 'finished', titles})
- }
- async function traverse(obj) {
- await new Promise(resolve => setTimeout(resolve, 1000));
- if (obj.children && obj.children.length > 0) jobs++
- const progress = titles.length / jobs
- if (progress === 1) finished = true
- console.log({ message: 'traversing JSON', titles, jobs, progress })
- if (typeof obj.title !== 'undefined') titles.push(obj.title)
- if (obj.children && obj.children.length > 0)
- for (const child of obj.children) {
- traverse(child);
- }
- }
- ticker();
- jobs++
- traverse({ children: data })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement