回撥地獄與Promise物件(二)
阿新 • • 發佈:2021-07-21
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) // 奶茶
}