JavaScript 红绿灯实现

题目:实现一个红绿灯,红灯3s,黄灯1s,绿灯2s。不断闪烁

 

方案一:嵌套回调写法——setTimeout

  • 让每个灯亮起来后,定时一段时间后再去亮灯
  • setTimeout负值每个light等待的时间
  • 具体:
    • 红灯亮了,设置3s定时
    • 3s后,黄灯亮了,设置定时1s
    • 1s后,绿灯亮,设置定时2s后,红灯亮起
    • 不断重复
const main=()=>{
    console.log('红灯');
  setTimeout(()=>{
    console.log('黄灯');
    setTimeout(()=>{
        console.log('绿灯');
      setTimeout(()=>{
        main();
      },2000)
    },1000)
  },3000)
};
main()

方案二:链式调用——promise

  • 使用promise代替setTimeout
  • 利用链式调用以及then来实现灯的转换
  • then返回一个promise对象,当这个对象为resolve状态then可以持续调用

 

根据上面的思路,我们先写个最基本的

const main=()=>{
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值