分享一道Promise笔试题

159 阅读1分钟

字符'a'4秒输出一次,字符'b'3秒输出一次,字符'c'2秒输出一次;如何让abc字符不断交替重复输出?

// 版本1
function stp() {
    new Promise((resolve,reject)=>{ 
        setTimeout(()=>{
            console.log('a');
            resolve()
        },4000) 
    }).
    then(()=>{
        new Promise((resolve,reject)=>{ 
            setTimeout(()=>{
                console.log('b');
                resolve()
             },3000) 
        }).
        then(()=>{
            new Promise((resolve,reject)=>{ 
                setTimeout(()=>{
                    console.log('c');
                    resolve()
                },2000) 
            }).
            then(()=>{
                stp();
            })
        })
    })
}
stp();
//版本2
function stp() {
    const p = new Promise((resolve,reject)=>{ 
        setTimeout(()=>{
            console.log('a');
            resolve()
        },4000) 
    })
    const p1 = p.then(()=>{
        return new Promise((resolve,reject)=>{ 
            setTimeout(()=>{
                console.log('b');
                resolve()
            },3000) 
        })
    })
    const p2 = p1.then(()=>{
        return new Promise((resolve,reject)=>{ 
            setTimeout(()=>{
                console.log('c');
                resolve()
            },2000) 
        })
    })
    p2.then(()=>{
        stp();
    })
}
stp();

有更好的方法,请留言评论,有错误的地方恳请指正!