红绿灯Promise问题
题目
function red(){
console.log('red');
}
function green(){
console.log('green');
}
function yellow(){
console.log('yellow');
}思路
实现
最后更新于
function red(){
console.log('red');
}
function green(){
console.log('green');
}
function yellow(){
console.log('yellow');
}最后更新于
function red(){
console.log('red');
}
function green(){
console.log('green');
}
function yellow(){
console.log('yellow');
}
const run = () =>
Promise.resolve()
.then(()=>wrap(red, 5)) // 易错
.then(()=>wrap(green, 2))
.then(()=>wrap(yellow,1))
.then(()=>run())
function wrap(fn, time) {
return new Promise((resolve, reject) =>{
setTimeout(
() => {
fn()
resolve()
}, time*1000)
})
}
run()
// 易错点 注意 wrap不可以被{}包括。没有{}表示有return
// 这样可以等待内部的setTimeout的resolve才会return resolve到下一个then