返回
红绿黄三色灯交替亮灯:揭秘实现背后的编程智慧
前端
2023-12-23 13:49:37
前言
红绿黄三色灯是道路交通中不可或缺的信号灯,它通过交替亮灯来控制车辆和行人的通行。在本文中,我们将使用 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 来实现灯的交替亮灭具有以下优点:
- 代码简洁、易于理解
- 实现方式灵活,可以根据需要调整灯的亮灭时间
- 可以实现灯的并行亮灭,提高效率
思考题
- 如何使用 CSS 来实现三色灯的亮灭效果?
- 如何使用 HTML 来实现三色灯的交互效果,如点击按钮来切换灯的状态?
- 如何使用其他编程语言来实现三色灯的交替亮灭功能?