promise实现红绿灯
时间: 2023-06-30 18:21:49 浏览: 107
好的,我可以给您讲解一下如何使用 Promise 实现红绿灯的控制。
首先,我们可以定义一个 `trafficLight` 函数,该函数接受一个时间参数,表示红绿灯持续的时间。在 `trafficLight` 函数内部,我们可以使用 Promise 来实现红绿灯的控制。
具体的实现思路如下:
1. 使用 `Promise.resolve()` 来返回一个初始的 Promise 对象。
2. 在 Promise 对象中使用 `setTimeout()` 来控制红绿灯的变化。当红绿灯为红灯时,我们可以使用 `resolve()` 方法来切换到下一个状态;当红绿灯为绿灯时,我们可以使用 `reject()` 方法来切换到下一个状态。
3. 在 Promise 对象中使用 `then()` 方法来处理状态变化后的逻辑。当红绿灯变为绿灯时,我们可以输出 "绿灯亮起来了!";当红绿灯变为红灯时,我们可以输出 "红灯亮起来了!"。
4. 在 `trafficLight` 函数内部,我们可以使用一个循环来不断切换红绿灯的状态,直到指定的时间结束。
下面是一个示例代码:
```javascript
function trafficLight(time) {
let promise = Promise.resolve();
const loop = () => {
promise = promise.then(() => new Promise((resolve, reject) => {
console.log('红灯亮起来了!');
setTimeout(() => {
console.log('绿灯亮起来了!');
reject();
}, time);
})).catch(() => new Promise((resolve, reject) => {
console.log('绿灯亮起来了!');
setTimeout(() => {
console.log('红灯亮起来了!');
resolve();
}, time);
})).then(loop);
};
loop();
}
trafficLight(2000); // 控制红绿灯持续时间为 2 秒
```
上面的代码中,我们使用了一个 `loop` 函数来不断切换红绿灯的状态。在 `loop` 函数内部,我们首先通过 `promise.then()` 方法来处理当前状态的变化,然后通过 `.catch()` 方法来处理下一个状态的变化。这样,我们就可以通过一个循环来不断控制红绿灯的变化了。
阅读全文