回调地狱与Promise对象(二)

promise

    // promise对象
    // resolve可以将异步数据传递出来
    let p = new Promise(function(resolve){
        resolve("hello world")
    })

    // 通过then拿到异步数据
    p.then(function(data){
        console.log(data)  // hello world
    })

重写之前的函数

    function getTea(){
        return new Promise(function(resolve){
            setTimeout(() => {
                resolve('奶茶')
            }, 1000);
        })
    }
    function getHotpot(){
        return new Promise(function(resolve){
            setTimeout(() => {
                resolve('火锅')
            }, 2000);
        })
    }
    // 先吃火锅,再喝奶茶
    getHotpot().then(function(data){
        console.log(data)
        return getTea()
    }).then(function(data){
        console.log(data)
    })

更好的方式是使用async函数

    // async函数
    async function getData(){
        // 直接获取resolve传递出来的异步数据
        let hotpot = await getHotpot()
        console.log(hotpot)  // 火锅
        let tea = await getTea()
        console.log(tea)  // 奶茶
    }
posted @ 2021-07-21 20:26  `Duet`  阅读(27)  评论(0编辑  收藏  举报