题目:实现一个红绿灯,红灯3s,黄灯1s,绿灯2s。不断闪烁
方案一:嵌套回调写法——setTimeout
- 让每个灯亮起来后,定时一段时间后再去亮灯
- setTimeout负值每个light等待的时间
- 具体:
-
- 红灯亮了,设置3s定时
- 3s后,黄灯亮了,设置定时1s
- 1s后,绿灯亮,设置定时2s后,红灯亮起
- 不断重复
const main=()=>{
console.log('红灯');
setTimeout(()=>{
console.log('黄灯');
setTimeout(()=>{
console.log('绿灯');
setTimeout(()=>{
main();
},2000)
},1000)
},3000)
};
main()
方案二:链式调用——promise
- 使用promise代替setTimeout
- 利用链式调用以及then来实现灯的转换
- then返回一个promise对象,当这个对象为resolve状态then可以持续调用
根据上面的思路,我们先写个最基本的
const main=()=>{