function delayOutput(list){
list.sort((a,b)=>a.delay-b.delay);
const tasks = list.map((item)=>{
return new Promise((resolve)=>{
setTimeout(()=>{
console.log(item.val);
resolve(item.val);
},item.delay)
})
})
return Promise.all(tasks)
}
const list = [
{ val:'a', delay:1000},
{ val:'b', delay:2000},
{ val:'c', delay:3000},
{ val:'d', delay:1000},
{ val:'e', delay:2000},
{ val:'f', delay:1000},
]
delayOutput(list).then(()=>{
console.log('All tasks completed')
})