返回

红绿黄三色灯交替亮灯:揭秘实现背后的编程智慧

前端

前言

红绿黄三色灯是道路交通中不可或缺的信号灯,它通过交替亮灯来控制车辆和行人的通行。在本文中,我们将使用 JavaScript 编程来实现三色灯交替亮灯的功能。

实现方案

首先,我们需要定义三个灯的状态变量:

let redLight = false;
let yellowLight = false;
let greenLight = false;

接着,我们需要使用定时器来控制灯的亮灭时间。我们可以使用 setTimeout() 函数来实现定时器:

setTimeout(() => {
  // 将红灯的状态切换为亮
  redLight = true;
  // 将其他两个灯的状态切换为灭
  yellowLight = false;
  greenLight = false;
}, 3000);

这段代码表示每隔 3 秒钟,红灯的状态就会切换为亮,而其他两个灯的状态则会切换为灭。

为了实现灯的交替亮灭,我们可以使用 Promise。Promise 是 JavaScript 中用于处理异步操作的一种对象。我们可以使用 Promise.then() 方法来实现灯的交替亮灭:

let redLightPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    // 将红灯的状态切换为亮
    redLight = true;
    // 将其他两个灯的状态切换为灭
    yellowLight = false;
    greenLight = false;
    // 触发 resolve 函数
    resolve();
  }, 3000);
});

let yellowLightPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    // 将红灯的状态切换为灭
    redLight = false;
    // 将黄灯的状态切换为亮
    yellowLight = true;
    // 将绿灯的状态切换为灭
    greenLight = false;
    // 触发 resolve 函数
    resolve();
  }, 2000);
});

let greenLightPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    // 将红灯的状态切换为灭
    redLight = false;
    // 将黄灯的状态切换为灭
    yellowLight = false;
    // 将绿灯的状态切换为亮
    greenLight = true;
    // 触发 resolve 函数
    resolve();
  }, 1000);
});

redLightPromise.then(() => {
  return yellowLightPromise;
}).then(() => {
  return greenLightPromise;
}).then(() => {
  // 灯的交替亮灭完成,重复执行
  return redLightPromise;
});

这段代码表示红灯每隔 3 秒亮一次,黄灯每隔 2 秒亮一次,绿灯每隔 1 秒亮一次。当一个灯亮完后,就会调用下一个灯的 Promise,从而实现灯的交替亮灭。

优点

使用 Promise 来实现灯的交替亮灭具有以下优点:

  • 代码简洁、易于理解
  • 实现方式灵活,可以根据需要调整灯的亮灭时间
  • 可以实现灯的并行亮灭,提高效率

思考题

  1. 如何使用 CSS 来实现三色灯的亮灭效果?
  2. 如何使用 HTML 来实现三色灯的交互效果,如点击按钮来切换灯的状态?
  3. 如何使用其他编程语言来实现三色灯的交替亮灭功能?