【JS编程系列】红绿黄三灯交替亮灯

一、题目

题目:红灯三秒亮一次,绿灯两秒亮一次,黄灯一秒亮一次;如何让三个灯不断交替重复亮灯?

二、解决方案

思路:主要考察Promise

 function red() {
        console.log("red");
      }
      function green() {
        console.log("green");
      }
      function yellow() {
        console.log("yellow");
      }

      const sleep = (time, fn) => {
        return new Promise((resolve) => {
          setTimeout(() => {
            fn(); //哪个灯亮
            resolve();
          }, time);
        });
      };

      let step = () => {
        Promise.resolve()
          .then(() => {
            return sleep(3000, red);
          })
          .then(() => {
            return sleep(2000, green);
          })
          .then(() => {
            return sleep(1000, yellow);
          })
          .then(() => {
            step();
          });
      };

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 写出下面这段代码的输出结果是? 输出结果 : 25 20 20 25 解析: 本题考点两个: 1, 作用域;...
    Grit_1024阅读 4,882评论 0 3
  • 题目:红灯三秒亮一次,绿灯两秒亮一次,黄灯一秒亮一次;如何让三个灯不断交替重复亮灯?三个亮灯函数已经存在: 1. ...
    HiLeo阅读 5,625评论 0 52
  • 什么是并行?什么是并发? 比如有多个任务需要处理 并发:一个处理器,允许交替执行任务,但是只能同时执行一个任务。 ...
    frameworkofthin阅读 3,034评论 0 0
  • 说明 最近在复习 Promise 的知识,所以就做了一些题,这里挑出几道题,大家一起看看吧(转载)。 题目一 解析...
    锋享前端阅读 3,717评论 0 0
  • 1 解析 resolve函数将Promise对象的状态从“未完成”变为“成功”(即从pending变为resolv...
    oWSQo阅读 871评论 0 0