Skip to content
HangoverHangover
首页
项目收藏
留言板
github icon
  • 代码片段

      • 红绿灯交替
        • 异步加载图片

      红绿灯交替

      author iconHangovercalendar icon2022年4月13日category icon
      • Promise
      tag icon
      • Promise
      • 异步
      • 红绿灯
      timer icon小于 1 分钟

      使用Promise实现红绿灯交替 红灯3秒一次,黄灯2秒一次,绿灯1秒一次

      <span></span>
      
      1
      let lights = document.querySelector("span")
      function red() {
          lights.innerHTML = "red";
      }
      function green() {
          lights.innerHTML = "green";
      }
      function yellow() {
          lights.innerHTML = "yellow";
      }
      function light(timer, cb) {
          return new Promise(resolve => {
              setTimeout(() => {
                  cb()
                  resolve()
              }, timer)
          })
      }
      function step() {
          Promise.resolve().then(() => {
              return light(3000, red)
          }).then(() => {
              return light(2000, green)
          }).then(() => {
              return light(1000, yellow)
          }).then(() => {
              return step()
          })
      }
      step()
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      Demo
      下一页
      异步加载图片
      鸟无声兮山寂寂,夜正长兮风淅淅。 ──李华《吊古战场文》
      Copyright © 2023 Hangover