深入了解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()