• 作者:老汪软件技巧
  • 发表时间:2024-09-04 15:02
  • 浏览量:

前言

现实生活中的红绿灯就是红灯、绿灯、黄灯之间不停的切换,这个时候可能就会想到定时器,将定时器嵌套,设置相应的时间,那么接下来我们用代码去实现吧~

正文

定义三个函数,来实现红灯、绿灯、黄灯

function red() {
    console.log('红灯');
}
function green() {
    console.log('绿灯');
}
function yellow() {
    console.log('黄灯');
}

定义函数run,里面实现红灯、绿灯、黄灯的切换,通过定时器套定时器,并在最后一个定时器内进行自身函数的调用,也就是递归

function run() {
    red();
    setTimeout(() => {
        green();
        setTimeout(() => {
            yellow();
            setTimeout(() => {
                run();
            }, 2000);
        }, 2000)
    }, 3000);
}

执行函数run

run();

实现效果:

还有一种方法,就是通过promise + async来实现

function timePromise(time) {
    return new Promise(function(resolve, reject) {
        setTimeout(resolve, time);
    });
}

async function changeColor(time, fn) {
   fn();
   await timePromise(time);
}

async function run () {
    while(true) {
        await changeColor(3000, red);
        await changeColor(2000, green);
        await changeColor(3000, yellow);
    }
}

结语

下面介绍一下async/await的知识点

async 函数await 表达式总结