手写红绿灯

126 阅读1分钟

简单实现,应该会有更好的写法。只要考察了promise和定时器。

注意resolve(),reject()。promise只有在resolve()或者reject()之后才会往下执行(promise的状态会发生改变),根据状态决定是进入then还是catch.

function lightPromise(fn,time){
  return new Promise((resolve)=>{
    setTimeout(()=>{
      fn()
      resolve()
    },time)
  })
}
function red(){
  console.log('红灯亮了')
}
function green(){
  console.log("绿灯亮了")
}
function yellow(){
  console.log("黄灯亮了")
}
lightPromise(red,1000).then(()=>{
  lightPromise(green,2000).then(()=>{
    lightPromise(yellow,3000)
  })