Promise解决回调地狱问题

366 阅读1分钟

回调地狱如下

function fn(callback){
    setTimeout(() => {
        console.log("一秒后输出")
        callback()
    },1000)
}
fn(function (){
    console.log(1)
    fn(function(){
        console.log(2)
        fn(function (){
            console.log(3)
        })
    })
})

使用Promise进行优化

function foo(){
    var promise = new Promise(((resolve, reject) => {
        setTimeout(() => {
            console.log("1秒后输出")
            resolve()
        },1000)
    }))
    return promise
}
foo().then(() => {
    console.log(1)
    return foo()
}).then(() => {
    console.log(2)
    return foo()
}).then(() => {
    console.log(3)
})