function red(){console.log('red')}
function green(){console.log('green')}
function yellow(){console.log('yellow')}
const light = (timer,cb)=>{
return new Promise((resolve, reject)=>{
setTimeout(()=>{
cb()
resolve()
},timer)
})
}
const step = ()=>{
Promise.resolve().then(()=>{
return light(3000, red)
}).then(()=>{
return light(1000, green)
}).then(()=>{
return light(2000, yellow)
}).then(()=>{
return step()
})
}
step()