回调函数是在函数A内传函数B作为参数,并且调用函数B,函数B被称为回调函数
看一段代码:
let af = function(a,b){
a(b)
}
af(function(b){
console.log("我是回调函数"+'----'+b)
},"我是参数b")
很明显其中的匿名函数就是回调函数,也可以将匿名函数封装
let af = function(a,b){
a(b)
}
let bf = function(b){
console.log("我是回调函数"+'----'+b)
}
af(bf,"我是参数b")
那么何为回调地狱呢?
回调地狱其实就是回调函数的多重嵌套,函数A运用了回调函数,函数A下面的函数B又运用了回调函数,依次类推
例子:
let af = function(a){
console.log(Math.random())
a()
}
af(function(){
af(function(){
console.log("end")
})
})
打印结果为:
0.09151653186594122
0.7165510992420432
end
这是2层的回调地狱,看起来也没什么复杂,那我们加多三层看看
let af = function(a){
console.log(Math.random())
a()
}
af(function(){
af(function(){
af(function(){
af(function(){
af(function(){
console.log("end")
})
})
})
})
})
这看起来是不是复杂了一些,假如af函数有多个参数的情况下,那就更复杂了,维护起来很麻烦
至于解决方法,可参考其他文章