回调地狱与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) // 奶茶
}