//promise解决回调地狱问题
function eat(fn) {
setTimeout(() => {
fn('吃饭')
}, 2000)
}
function xizao(fn) {
setTimeout(() => {
fn('洗澡')
}, 1000)
}
eat(function (data) {
console.log(data)
xizao(function (data) {
console.log(data)
xizao(function (data) {
console.log(data)
xizao(function (data) {
console.log(data)
})
})
})
}
)
//异步函数的调用会产生回调地狱,代码会像一坨屎
function eat() {
return new Promise((resolve) => {
setTimeout(() => {
resolve('吃饭')
}, 2000)
})
}
function xizao() {
return new Promise((resolve) => {
setTimeout(() => {
resolve('洗澡')
}, 1000)
})
}
//通过Promise的then方法解决回调地狱问题,代码会变成一行一行的,不会嵌套
eat().then((res) => {
console.log(res + '1')
return xizao()
}).then((res) => {
console.log(res + '1')
})
//通过async,await函数将异步函数以同步的形式执行
async function run() {
let eat1 = await eat()
console.log(eat1 + '2')
let xizao1 = await xizao()
console.log(xizao1 + '2')
}
run()