1. 程式人生 > 其它 >回撥地獄與Promise物件(二)

回撥地獄與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)  // 奶茶
    }