循环打印红绿灯问题

深入了解promise函数,再用async、await函数

1.问题  循环打印红绿灯

        红灯三秒后变绿灯

        绿灯5秒后变黄灯

        黄灯两秒后变红灯

2.普通方法

 function red() {

        return new Promise((resolve)=>{

                console.log('现在是红灯)

                setTimeOut(()=>{

                        const greenPromise = green()

                        resolve(greenPromise )

                },3000)

        })

}

 function green() {

        return new Promise((resolve)=>{

                console.log('现在是绿灯)

                setTimeOut(()=>{

                        const yellowPromise = yellow()

                        resolve(yellowPromise )

                },5000)

        })

}

 function yellow() {

        return new Promise((resolve)=>{

                console.log('现在是黄灯)

                setTimeOut(()=>{

                        const redPromise = red()

                        resolve(redPromise )

                },5000)

        })

}

//调用方法

red();

3.优化

function timer(color,delay,next){

        return new Promise((resolve)=>{

                console.log(`现在是${color}灯,${delay}秒时候变${next}灯`)

                setTimeOut(()=>{

                        resolve()

                },delay*1000)

        })

}

async function light(){

        await timer('红',3,'绿')

        await timer('绿',5,'黄')

        await timer('黄',2,'红')

        //再一次执行方法本上循环调用

        await light()

}

//执行方法

light()

        

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值