更新:增加使用 async/await
以及箭头函数的重构代码
问题
红灯三秒亮一次,绿灯一秒亮一次,黄灯2秒亮一次;如何让三个灯按照这个规律不断交替重复亮灯?(用Promse实现)三个亮灯函数已经存在:
function green() {
console.log("green");
}
function yellow() {
console.log("yellow");
}
function red() {
console.log("red");
}
#思路解析
一道经典的考察 promise 应用的面试题
我们要解决两个问题,思路如下
###1 控制每盏灯,使其按某节奏闪烁
- 命名为 flash 函数,参数为亮灯函数与时间参数
- 应该会用到计时器
###2 控制三种灯闪烁的顺序
- 命名为 control 函数。
- 应该会用到promise,链式调用。
###3 实现重复不断的循环
- 递归
- 为什么不能使用 while 等实现无限循环
#代码演进
实现一次周期内的闪烁
通过上面 1、2 两点,可以得到如下代码
function flash(cb, time) {}
function control() {
Promise.resolve()
.then()
.then()
.then()
}
对于 cont