回调函数就是一个函数,这个函数作为另一个函数的参数,在这个另一个函数中被调用执行
回调地狱就是函数里面的参数是是一个函数,层层嵌套,如下
function aaa(){
setTimeout(()=> {
console.log('我')
setTimeout(()=> {
console.log('爱')
setTimeout(()=> {
console.log('你')
})
},1000)
},1000)
}
利用promise解决回调地狱
function bbb(){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
console.log('我')
resolve()
},1000)
})
}
function ccc(){
return new Promise((resolve,reject)=>{
setTimeout(()=> {
console.log('爱')
resolve()
},1000)
})
}
function ddd(){
return new Promise((resolve,reject)=>{
setTimeout(()=> {
console.log('你')
resolve()
},1000)
})
}
bbb().then(res => {
return ccc()
}).then(res=> {
return ddd()
}).then(res=>{
setTimeout(()=> {
console.log('over')
},2000)
})
让异步看起来是同步